Programm aus Programm starten
-
Hallo,
ich würde gerne aus einer Konsolenanwendung heraus ein anderes Programm starten.
Wie geht denn so was??
HILFE
-
ShellExecute(NULL, "open", "C:\\ProgName.Extension", NULL, NULL, SW_SHOWNORMAL);
So haut das hin!
-
Auch unter Linux?
@ FrankyBoy
mfg bin
-
habe unter Linux nicht die Erfahrung, da gibt´s aber bestimmt was ähnliches.
So wie es oben steht habe ich es letzt endlich doch nicht implementiert.
sondern so:STARTUPINFO si; PROCESS_INFORMATION pi; if(CreateProcess(NULL,"C:\\SRIsim.exe",NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,"c:\\",&si,&pi)==false) { cout<<"Fehler beim Ausführen des Simulators"; Aria::shutdown(); return 1; } HANDLE hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE, pi.dwProcessId);
bis denn
-
unter windows könntest du auch _execl nehmen
_execl, _wexecl
Load and execute new child processes.int _execl( const char *cmdname, const char *arg0, ... const char *argn, NULL );
int _wexecl( const wchar_t *cmdname, const wchar_t *arg0, ... const wchar_t *argn, NULL );
Function Required Header Optional Headers Compatibility
_execl <process.h> <errno.h> Win 95, Win NT
_wexecl <process.h> or <wchar.h> <errno.h> Win NT
-
system() geht auch noch, aber mit sicherheit nicht die beste lösung.
-
Hi!
Ich programmiere mit dem Borland C++ Builder 5.1 und war bisher sehr zufrieden mit der Hilfe, aber ich kann den Befehl ShellExecute nicht finden. In welcher Funktion ist dieser Befehl deklariert?
Mein Programm soll auch ein Batch-File ausführen. Habe erst mit system() versucht bin aber gescheitert, dann habe ich in diesem Thema die Funktion ShellExecute befunden und in meinen Quelltext eingebaut. Der Compiler kompiliert fleißig und beschwert sich nicht. Aber mein Batch-file wird nicht gestartet.
ciao,
MrFryze
-
wenn du ganz nach unten scrollst siehst du:
Function Information
Minimum DLL Version shell32.dll version 3.51 or later
Custom Implementation No
Header shellapi.h
Import library shell32.lib
Minimum operating systems Windows NT 3.1, Windows 95
Unicode Implemented as ANSI and Unicode versions.
-
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()?