Seite 1 von 2
KillProcess(
Verfasst: 26.03.2024 07:35
von Then
Hallo zusammen,
ich versuche mein eigenes laufendes Programm zu beenden, um es gegen eine neuere Version zu tauschen. Mit KillProcess(PID) klappt es leider nicht.
Mein Programm hat den titel TEST.exe und der updater TEST-Updater.exe. (nur ein Beispiel) sobald ich in TEST-Updater den befehl KillProcess(PID) ausfuhre, beendet sich der UPDATER, aber nicht das richtige tool
Gibts noch ne andere Möglichkeit, mein Programm zu beenden ? Ist PBOSL noch aktuell fur PB6 ??
Re: KillProcess(
Verfasst: 26.03.2024 09:55
von Bisonte
Test.Exe ruft Test-Updater.exe auf und beendet sich mit End - ist keine Option ?
Re: KillProcess(
Verfasst: 26.03.2024 10:11
von Then
Nein, leider nicht, denn das Tool ist im Autostart drin und ist auf mehreren PCs installiert. Ich möchte eigentlich nur das manuelle update durchführen können. Dafür muss das programm quasi gekillt, neu kopiert und dann wieder gestartet werden. Ein Zwangsupdate also
Re: KillProcess(
Verfasst: 26.03.2024 10:15
von dige
Killen ist eigentlich grundsätzlich nicht zu empfehlen, da es kein gesichertes beenden darstellt. Besser ist es mit einem Mutex zu arbeiten. Du kannst deinen Updater einen bestimmten Mutex erstellen lassen und dein laufendes Programm erkennt das und beendet sich.
Such mal im Forum nach CreateMutex_()
Re: KillProcess(
Verfasst: 26.03.2024 10:43
von Then
Traurig. So ne komplexe und gute Programmiersprache, aber dieses Problem muss ich dann wohl mit ner externen Batch Datei lösen.
TaskKill /IM ist die Lösung
Re: KillProcess(
Verfasst: 26.03.2024 11:07
von dige
Ich verstehe Dich jetzt so, du möchtest es unbedingt übers Killen machen. Also nicht über eine Interprozesskommunikation?
Dann versuche mal dein Kill mit Adminrechten. Vielleicht gehts dann..
Re: KillProcess(
Verfasst: 26.03.2024 11:25
von Then
Ja, das ist das Problem. Es ist ein kleines Tool für unsere Firma, deren Mitarbeiter keine Adminrechte haben. Installieren konnten sie es ohne Probleme und es kopierte sich eigenständig in den Autostart und läuft mit Windows. Eine automatische UpdateFunktion ist auch drin. Aber...
... manche Mitarbeiter sind der Meinung, dass das Tool nicht mehr funktioniert und sie wollen es neu installieren. (Seelenfrieden

) Da ich sie nicht in den Autostart-Ordner lotsen möchte (viele sind wirklich nur reine Anwender) und ich nicht in alle Büros rennen möchte wegen sowas (120 Stück), sollen die Kollegen selbst den INSTALLER bei Bedarf anklicken und der erledigt alles. Das Tool macht nichts dramatisches und ist nur im Hintergrund. Also völlig Wurscht, ob ichs kille oder beende. Da fließen keinerlei Daten. Mit der CMD Variante läufts
Re: KillProcess(
Verfasst: 26.03.2024 11:26
von Then
Interprozesskommunikation ist ja noch nicht drin. Muss ich dann mit dem nächsten Update einbauen und dann wirds sauberer. Ist ja "unter der Haube" und kriegt keiner mit- Muss erstmal gucken wie das geht Mutex ist neu für mich und eine gute Beschreibung habe ich noch nicht gefunden. Ist sicherlich die feinste Methode.
Re: KillProcess(
Verfasst: 26.03.2024 11:37
von dige
Reagiert dein Programm auf Alt+F4 bzw. auf die CloseWindow Message? Dann kannste deinen Updater auch die PID in der Prozessliste suchen lassen und dann an dein Programm die Nachricht senden..
Re: KillProcess(
Verfasst: 26.03.2024 11:51
von Then
Nein, es reagiert auf keiner dieser Kombinationen, so dass es auch nicht "versehentlich" beendet wird. Es MUSS auf jedem Pc laufen und darf nur vom ADMIN beendet werden. Selbst TaskManager ist in den Büros nicht möglich. Also nur über diese Exe und mit der BATCH kann ich sie beenden und die neue kopieren und starten. Das klappt ja auch. Mutex würde ich gerne probieren aber ich stehe da noch vorm Berg. Wie übergebe ich den Befehl sich zu beenden ??