Exe Dateien schließen
-
Dieser Thread wurde von Moderator/in Shade Of Mine aus dem Forum ANSI 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.
-
Das müsste mit CreateProcess und TerminateProcess gehen.
-
Ist TerminateProcess eine optimale Variante? Was passiert eigentlich mich Child-Prozessen oder geladenen Dlls wenn man den Prozess abschießt?
-
Christoph K. schrieb:
Ist TerminateProcess eine optimale Variante?
Kommt drauf an, was du willst. Wenn du möchtest, dass der Prozess beendet wird, dann ja, weil danach ist der Prozess auf jeden Fall weg.
Wenn du möchstest, dass sich das Programm normal beendet, soltest du ihm die entsprechende Nachricht senden und es sich selbst beenden lassen.Christoph K. schrieb:
Was passiert eigentlich mich Child-Prozessen oder geladenen Dlls wenn man den Prozess abschießt?
DLLs solten entladen werden. Kinprozesse müsstest du ausprobieren, würd aber tippen, dass die bestehen bleiben.
-
-
Sehr hilfreicher Link.
Das Beenden über WM_CLOSE funktioniert auch ausgezeichnet in einer normalen Anwendung. In einem Service jedoch nicht, da schlägt das Beenden fehl. Ich vermute weil der Service vom System und die zu beendende Anwendung vom aktuellen Nutzer gestartet wurde. Bisher habe ich deshalb immer TerminateProcess verwendet. Gibt's für solche Fälle auch eine saubere Lösung?
-
Ein Service hat kein Fenster. Wer soll da die Nachricht WM_CLOSE entgegennehmen? Eionen Service beednet man mit ControlService und dem Flag SERVICE_CONTROL_STOP.
-
Ich habe mich wohl unglücklich ausgedrückt, sorry.
Der Service soll eine Anwendung mit Fenster beenden. Der Service selbst soll nicht beendet werden.Der von WebFritzi gepostete Code funktioniert, wenn man ihn in einer Anwendung benutzt. In einem Service funktioniert zwar das TerminateProcess, aber ich kann keine (WM_CLOSE-)Nachricht an eine Anwendung senden, weil ich kein Handle auf das Fenster bekomme. Ich habe die Process-ID der Anwendung, aber wie krieg ich das Fensterhandle dazu? Mit EnumWindows erhalte ich nur Handles auf "Fenster" von meinem Service und vier mal svhost.exe.
Hat jemand Ideen dazu?Bitte um Verzeihung, falls das schon zu Offtopic ist.
-
Dein Service läuft in einer anderen WindowsStation auf einem anderen Desktop. Deswegen "sieht" dein Service das Fenster nicht.
-
Morris Szyslak schrieb:
Sehr hilfreicher Link.
Das Beenden über WM_CLOSE funktioniert auch ausgezeichnet in einer normalen Anwendung. In einem Service jedoch nicht, da schlägt das Beenden fehl. Ich vermute weil der Service vom System und die zu beendende Anwendung vom aktuellen Nutzer gestartet wurde. Bisher habe ich deshalb immer TerminateProcess verwendet. Gibt's für solche Fälle auch eine saubere Lösung?Ein Service? Der hat normalerweise kein Fenster, an das Du WM_CLOSE senden kannst.
-
helper schrieb:
Morris Szyslak schrieb:
Sehr hilfreicher Link.
Das Beenden über WM_CLOSE funktioniert auch ausgezeichnet in einer normalen Anwendung. In einem Service jedoch nicht, da schlägt das Beenden fehl. Ich vermute weil der Service vom System und die zu beendende Anwendung vom aktuellen Nutzer gestartet wurde. Bisher habe ich deshalb immer TerminateProcess verwendet. Gibt's für solche Fälle auch eine saubere Lösung?Ein Service? Der hat normalerweise kein Fenster, an das Du WM_CLOSE senden kannst.
Au Mann, habe ich heute Tomaten auf den Augen, die letzten Beiträge habe ich glatt übersehen. Sorry.