Programm aus Programm starten
-
MrFryze schrieb:
Aber mein Batch-file wird nicht gestartet.
rückgabewert von shellexecute?
-
miller_m schrieb:
system() geht auch noch, aber mit sicherheit nicht die beste lösung.
Aber die am besten portierbare und die einzige, die Standard-C++ kennt.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hi!
Alle Funktionen erzählen mir das gleiche. Ich gekomme immer die Fehlermeldung: No such file or directory
Ich habe den Pfad der Datei statisch fest eingetragen, aber es funktioniert nicht. Die kritische Stelle sieht so aus:
execl("J:\\Programmieren\\comp_hds\\scandrvJ.bat",NULL,NULL, NULL); perror("exec error"); // ShellExecute("J:\\Programmieren\\comp_hds(new)\\BatchFiles\\scandrvJ.bat", NULL, NULL, NULL, NULL, NULL);
Ich habe es einmal mit ShellExecute und einmal mit execl() probiert. Beide geben die gleiche Fehlermeldung aus.
-
Öhm, möchtest Du Dir die einzelnen Parameter und ihre Bedeutung in der MSDN: ShellExecute nochmals genauer ansehen?
Der erste Parameter von ShellExecute zum Beispiel ist NICHT das aufzurufende Programm...
Ich beziehe mich damit auf:
// ShellExecute("J:\\Programmieren\\comp_hds(new)\\BatchFiles\\scandrvJ.bat", NULL, NULL, NULL, NULL, NULL);
-
Hi!
Ich probiers dann wohl mal anders. Danke schön!
-
Ich habe es schon mal geschafft den explorer auf C:\Windows zu starten. Schaffe es aber nicht das batch-File auszuführen. Wieso nicht?
Das funzt:
//CreateProcess(NULL,"J:\Programmieren\comp_hds\BatchFiles\scandrvJ.bat",NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,NULL,NULL) ; //execv("J:\\Programmieren\\comp_hds\\scandrvJ.bat",NULL); ShellExecute(NULL, "open", "C:\\Windows\\explorer.exe", 0,0, SW_SHOWDEFAULT); //system("C:\\Windows\\explorer.exe");
Das funktioniert auch:
ShellExecute(NULL, "open", "J:\\Programmieren\\comp_hds\\batchFiles", 0,NULL, SW_SHOWDEFAULT);
Das funktioniert nicht:
ShellExecute(NULL, "open", "J:\\Programmieren\\comp_hds\\batchFiles\\scandrvJ.bat", 0,NULL, SW_SHOWDEFAULT);
Ich weiß nicht warum. Hat irgend jemand eine Ahnung.
-
So sollte es gehen, hab´s aber noch nicht probiert
ShellExecute(NULL,"open","iexplore.exe","---bat-Datei----",NULL, SW_SHOW);
-
mww schrieb:
ShellExecute(NULL,"open","iexplore.exe","---bat-Datei----",NULL, SW_SHOW);
Ist das Feld nicht für Parameter, in das du ---bat-Datei---- geschrieben hast? Ich probiers mal vielleicht klappts.
-
Hi!
Ich habe mal ein bischen rum probiert. Jedes mal, wenn ich mein Programm start und der ShellExecute-Befehl aus geführt wird sind die batch-Files leer. Sobald das Programm beendet ist, sind die Batch-Dateien wieder voll. Ich habe den ShellExecute-Befehl so verwendet:
ShellExecute(NULL, "open","J:\\Programmieren\\comp_hds\\batchFiles", NULL,NULL, SW_SHOWDEFAULT);
Diese Variante funktioniert leider nicht:
mww schrieb:
ShellExecute(NULL,"open","iexplore.exe","---bat-Datei----",NULL, SW_SHOW);
-
-
Hi!
Ich möchte euch erstmal für eure bisherige Mühe danken. Leider habe ich es bisher noch nicht geschafft mein Batch-File zu starten. Hier ein bischen mehr Code:
//CreateProcessA("J:\Programmieren\comp_hds\BatchFiles","cmd scandrvJ.bat",NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,NULL,NULL,NULL) ; ShellExecute(NULL, "open","J:\\Programmieren\\comp_hds\\batchFiles\\","//c scandrvJ.bat",NULL, SW_SHOWDEFAULT); cout << "File erstellt"; getch();
Was mache ich den falsch? Gibt es vielleicht eine einfachere bessere Möglichkeit außer system()?
-
Zum zweiten Mal:
http://www.c-plusplus.net/forum/viewtopic.php?t=52810&highlight=bat+shellexecute
Anklicken, lesen und verstehen!
-
Hi!
Habs jetzt mir System gemacht. Wenn mann das programm explizit in kleinen Schritte zur datei navigiert dann klappt das auch. Sieht jetzt so aus, wenn es interessiert:
system("J:"); system("J:\\programmieren\\comp_hds\\batchFiles\\scandrvJ.bat");
Danke für eure Mühe. Vielleicht finde ich ja irgendwann mal einen anderen Weg, aber mit ShellExecute komme ich nicht klar.
Ciao,
Christoph
-
Funktioniert denn
ShellExecute(NULL, "open", "cmd", "/c \"J:\\programmieren\\comp_hds\\batchFiles\\scandrvJ.bat\"", NULL, SW_SHOWDEFAULT);
wirklich nicht?
Wenn nein, welchen Wert liefert ShellExecute denn zurück? Kann dieser zurückgegebene Wert auf einen Fehler hindeuten?
/Edit: Hab das bei mir grad gestestet (Win2000), funktioniert wunderbar so...
-
Hi!
Ich habe es jetzt mal so reingeschrieben:
ShellExecute(nSuccess, "open","cmd","/c \"J:\\Programmieren\\comp_hds\\batchFiles\\scandrvJ.bat\"", NULL, SW_SHOWNORMAL); cout << nSuccess << "\n";
Mein Programm gibt 000000 aus. Was bedeutet das jetzt? Mein Programm macht aber eine neue Konsole auf, dessen Prompt auf meine hinterste Partition zeigt.
-
MrFryze schrieb:
Mein Programm gibt 000000 aus. Was bedeutet das jetzt?
deine nSuccess (wi auch immer du auf diesen trichter kommst) ist ein fensterhandle und kein rückgabewert.
lies dir doch mal aufmerksam den link durch
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.aspMrFryze schrieb:
Mein Programm macht aber eine neue Konsole auf, dessen Prompt auf meine hinterste Partition zeigt.
kann doch sein. denn keiner hier weis was in "scandrvJ.bat" steht.
-
Das, was Du da "nSuccess" genannt hast, ist eigentlich ein Handle auf ein Fenster, was Du bereitstellen solltest, sofern Du an MessageBoxen des zu startenden Programmes interessiert bist...
Wenn Du da nichts reinschreibst, ist klar das er 00000 als nSuccess ausgibt...
-
Wie kann man denn überhaupt auf sowas wirsches kommen?
-
Sorry.
Dummheit oder Unwissenheit, kommt aufs gleiche raus.
Kann ich es so machen? Liefert jetzt die 2.ShellExecute(NULL,"open","cmd ","/c \"J:\\Programmieren\\comp_hds\\batchFiles\\scandrvE.bat\"",NULL,SW_SHOWDEFAULT); error = GetLastError(); cout << error << "\n";