Programm mit Aufruf von anderem Programm starten
-
Hallo,
ich möchte ein Konsolenprogramm mit einem Aufruf zum ausführen aus einem anderen Programm starten. (Später soll das mal ein Windowsdialog werden)
Also als ob ich unter "ausfüren" in windows das Programm starten würde.
Nun hab ich das mit Shellexecute gemacht und das Programm wird auch aufgerufen, aber eben nicht mit dem Parameter dazu.
Das sieht bei "ausfüren" ungefähr so aus:C:\Test.exe {blabla} -k
Und da geht das auch, aber eben nicht in der Anwendung
Vielen Dank für die Hilfe
-
schon mit system(" ... "); probiert?
-
Hallo
Nun hab ich das mit Shellexecute gemacht
Und wie hast du das denn gemacht? Wenn du den relevanten Quellcode hier posten würdest, könnten wir die ja helfen.
bis bald
akari
-
Wie ist denn das gemeint?
eigentlich will ich doch nur für den "lpParameters" den richtigen Wert angeben, oder bin ich da auf dem H...
zum Beispiel einfach so:
#include "stdafx.h" #include <windows.h> int _tmain(int argc, _TCHAR* argv[]) { LPCTSTR lpParameters; lpParameters = "{blabla} -k"; ShellExecute(0,"open","C:\\Programme\\Test.exe",lpParameters,0,SW_MAXIMIZE); return 0; }
-
BCB-Hilfe schrieb:
lpParameters
If lpFile specifies an executable file, lpParameters is a pointer to a null-terminated string that specifies parameters to be passed to the application.
If lpFile specifies a document file, lpParameters should be NULL.In deinem Fall dürfte NULL passen.
-
Wenn ich NULL angebe habe ich ja denn Aufruf nicht eingebunden. Das ist ja keine Datei oder Dokument, was geöffnet wird. Das Programm braucht diesen String in der dargestellten Form!!
-
DarthZiu schrieb:
schon mit system(" ... "); probiert?
Das funktioniert zwar, aber es soll ja mal auch dynamisch geändert werden können. Also der Aufruf muß im Programm veränderbar sein. Deshalb wollte ich das ja auch mit Shellexecute machen. Diese Zeichenkette muß also auswechselbar gestaltet werden können. Das ist kein fester Aufruf für das Programm.
Bitte um Hilfe!!!
Ich kann es ja noch mal anders erklären.
Das Windowsprogramm soll später mal Konsolenprogramme mit entsprechenden Parametern aufrufen. Diese Programme sollen angegeben werden können und der entsprechende Aufruf auch.
Ich hoffe, jetzt ist die Problematik klar
-
Bei mir funktioniert ShellExecute auch mit Parametern, getestet mit ...,"explorer","C:",...
Vielleicht liegt das Problem bei der "test.exe"?
-
Morris Szyslak schrieb:
Bei mir funktioniert ShellExecute auch mit Parametern, getestet mit ...,"explorer","C:",...
Vielleicht liegt das Problem bei der "test.exe"?Das liegt sicherlich daran, daß es bei meiner Test.exe eine Argumentenübergabe ist. Wenn ich das mit Notepad und einem Textfile oder so mache, geht das bei mir auch! Also ich muß Argumente übergeben können.
Jetzt die Frage: Wie kann ich das dynamisch machen? Gibt es vielleicht noch eine andere Möglichkeit?Danke für die Hilfe
-
evil-peter schrieb:
DarthZiu schrieb:
schon mit system(" ... "); probiert?
Das funktioniert zwar, aber es soll ja mal auch dynamisch geändert werden können. Also der Aufruf muß im Programm veränderbar sein. Deshalb wollte ich das ja auch mit Shellexecute machen. Diese Zeichenkette muß also auswechselbar gestaltet werden können. Das ist kein fester Aufruf für das Programm.
Was spricht denn dagegen, den Parameter von system() auszutauschen?
int main() { cout<<"Welches Programm wollen Sie starten?\n"; string command; getline(cin,command); system(command.c_str()); return 0; }Ansonsten solltest du einfach mal die Gegenseite kontrollieren - eventuell hast du die Parameter nur nicht abgefangen.
-
string befehl = string( "test.exe " ) + "{blabla} " + "-k"; system(befehl.c_str());Dynamisch genug?
-
LordJaxom schrieb:
string befehl = string( "test.exe " ) + "{blabla} " + "-k"; system(befehl.c_str());Dynamisch genug?
Ich muß vielleicht noch ein bisschen deutlicher werden.
1. Kann ich bei system() auch das Konsolenfenster verstecken lassen?
2. muß das ganze in einer Schleife laufen, wobei z.B. "enter" die Schleife jedesmal startetEs werden von dem Programm (das, welches aufgerufen werden soll) verschiedene Textstrings verarbeitet. Und das passiert dann hintereinander eben immer mit enter gestartet. Und außerdem soll eben die Konsole nicht zu sehen sein, und das geht ja mit Shellexecute. Deshalb wollte ich eben Shellexecute verwenden.
Gruß