.exe-Datei aus einer Anwendung heraus starten
-
Hallo,
meine Anwendung soll nach Beendigung ihrer Aufgabe eine zweite Anwendung
aufrufen, die als .exe-Datei vorliegt. Beide wurden mit C++Builder6 ge-
schrieben und sollen unter win2000 laufen.Gibt es da sowas wie WinExec o.ä. mit dem ich das bewerkstelligen kann?
Danke im Voraus
Guido
-
-
Hallo,
danke, die Beispiele und Erklärungen in der FAQ waren gut. Leider passiert da bei mir nichts
So sieht mein Code aus:// Diese Klasse ist von TService abgeleitet void __fastcall TService1::ServiceExecute(TService *Sender) { while(!Terminated) { ServiceThread->ProcessRequests(false); int ret = (int)ShellExecute(0, "open", "TestProject.exe", 0, 0, SW_SHOWNORMAL); if(ret <= 32) { ServiceThread->Terminate(); } else Sleep(2000); } }Das Programmle "TestProject.exe" macht nichts weiter, als die Uhrzeit in eine Datei schreiben. Kann es sein, dass soetwas in einer Service-Anwendung prinzipiell nicht geht?
Danke im Voraus
Guido
-
WinExec("C:\\Meine_Andere_EXE.exe",SW_SHOWNORMAL)OK?
-
Hallo,
es funktioniert auch mit ShellExecute(...) wenn man den kompletten Programmpfad mit angibt. Gibt's da auch eine Methode um das Programm wieder zu beenden?
TIA Guido
-
Hallo
entweder das entstandene Fenster mit FindWindow suchen und eine Message zum Schließen schicken, oder anstatt ShellExecute() dann ShellExecuteEx() nehmen und den dort erhaltenen Prozeßhandle in TerminateProcess() verwenden.
bid bald
akari
-
Hallo,
erstmal Danke fuer eure Tipps. Ich habe jetzt das Loeschen einer laufenden Anwendung wie folgt geloest:
// myProgramm ist myProgramm.exe! HWND wHandle = ::FindWindow(NULL, "myProgramm"); unsigned long pId = 0L; if (wHandle != NULL) { GetWindowThreadProcessId(wHandle, &pId); } HANDLE pH = OpenProcess(PROCESS_TERMINATE, 0, pId); if (TerminateProcess(pH, 0)) { wHandle = 0; }Funktioniert jedenfalls

Gruss Guido