externe Anwendung schließen
-
Hi,
ich möchte ein Programm schreiben welches ein anderes Programm schließt!
Brauche HilfeMfG FB
-
http://bytesandmore.de/rad/cpp/snipp/sc03001.php
glotz ma da vorbei
-
Hallo
ist eine Sache der WinAPI. Such mal nach EnumWindows bzw. FindWindow und TerminateProcess.
bis bald
akari
-
/------------------------------------------------------------- // Starten und Beenden von Anwendungen mit CreateProcess //------------------------------------------------------------- // Windows-Strukturen für Process-Informationen: TStartupInfo stgStartupInfo; TProcessInformation stgProcessInfo; void StartApp(AnsiString); // Startet Programm void CloseApp(void); // Beendet Programm //--------------------------------------------------------------- // Startet das Programm slProgr //--------------------------------------------------------------- void StartApp(AnsiString slProgr) { setmem(&stgStartupInfo,sizeof(TStartupInfo),0); stgStartupInfo.cb = sizeof(TStartupInfo); CreateProcess(NULL,slProgr.c_str(),NULL,NULL, false,NORMAL_PRIORITY_CLASS, NULL,ExtractFilePath(slProgr).c_str(), &stgStartupInfo,&stgProcessInfo); } //--------------------------------------------------------------- // Beendet das Programm, sofern gestartet //--------------------------------------------------------------- void CloseApp(void) { TerminateProcess(stgProcessInfo.hProcess,0); }
Wo gebe ich den Programmnamen bzw das Handle, welches ich mit FindWindow ermittelt habe, an?
@akari:
Hab nichts passendes gefunden!gruß FB
-
Hallo
du mußt erst mal sagen, ob du das zu schließende Programm selber in deinem eigenem Programm startest oder bereits extern gestartet wurde.
In ersten Fall brauchst du die Variante mit CreateProcess (nebenbei : das Beispiel geht davon aus, das du die Structs und die Funktionen als Member eines Forms definierst). Dann rufst duStartApp("c:\\temp\\prog.exe");
auf, um besagtes Programm zu starten, und irgendwann eben CloseApp, um es wieder zu schließen.
Im zweiten Fall statt dem Create eben
AnsiString titel = "Prog"; // Fenster- bzw. Prozeßtitel des Programms HWND hWnd = FindWindow(titel.c_str(), NULL); ... TerminateProcess(hWnd,0);
bis bald
akari
-
Hallo,
Warum so kompliziert ? So geht's doch auch :
HWND Handle_des_Fensters = FindWindow(0,"Caption des Fensters"); if (PostMessage(Handle_des_Fensters, WM_CLOSE, 0, 0)) Beep(4000, 50);
Wobei "Caption des Fensters" der Titel des zu schließenden Fensters ist.
Falls es klappt, dann piepts...Bis dann denn,
Nash
-
Thx @ all
@Nash: hab deine Lösung genommen
hat geklappt!MfG FB