Seite 1 von 3

Prozess Beenden

Verfasst: 29.12.2008 22:26
von Zulman
Hallo,
ich habe ein Programm programmiert, das eigendlich immer im Hintergrund abläuft und beim Systemstart mit startet. Mein Problem ist jetzt, dass ich mit der uninstall.exe, also der Datei zum deinstallieren von diesem kleinen Programm, die Datei ja nicht löschen kann, und auch nicht die anderen, auf die mein Prozess zugreift, weil sie ja verwendet werden. Deshalb müsste ich zuerst den Prozess beenden. Ich weiß, dass die Frage nach dem Beenden eines Prozesses hier schon öfters gestellt worden ist. Doch die Antworten haben sich immer nur auf die versionen 3.x oder 4.00 bezogen. Da ich 4.3 besitze, funktionieren diese Methoden bei mir nicht. Danke schon mal im Vorraus.

mfg
Zulman

Verfasst: 29.12.2008 22:29
von Kaeru Gaman
wenn das dein programm ist, dann wäre es doch kein problem, das von intern zu beenden.

Prozess Beenden

Verfasst: 29.12.2008 22:36
von Zulman
Wie meinst du das? Das Programm soll ja normalerweise die ganze Zeit durch laufen und wird per Autostart gestartet. Und ein externes Programm soll es löschen.

Re: Prozess Beenden

Verfasst: 29.12.2008 22:39
von ts-soft
Zulman hat geschrieben:Wie meinst du das? Das Programm soll ja normalerweise die ganze Zeit durch laufen und wird per Autostart gestartet. Und ein externes Programm soll es löschen.
Wenn Du die uninstall.exe schreibst, ist es doch kein Problem eine
Kommunikationsmöglichkeit ins eigene Programm einzubauen. Postmessage,
Mailslots, SharedMemory usw.

Prozess Beenden

Verfasst: 29.12.2008 22:42
von Zulman
Tut mir leid das jetzt einfach ma so sagen zu müssen. Hätte ich vielleicht schon im vorraus sagen sollen. Aber ich hab das ganze nicht umsonst ins Anfängerforum geschrieben ;) . Ich Programmiere erst seit ca. 4 Tagen.

Re: Prozess Beenden

Verfasst: 29.12.2008 23:12
von ts-soft
Zulman hat geschrieben:Tut mir leid das jetzt einfach ma so sagen zu müssen. Hätte ich vielleicht schon im vorraus sagen sollen. Aber ich hab das ganze nicht umsonst ins Anfängerforum geschrieben ;) . Ich Programmiere erst seit ca. 4 Tagen.
Stichworte haste bekommen, die Suchfunktion sei Dein :wink:

PS: Für 4 Tage haste Dir wohl etwas viel vorgenommen und ohne Code
kannste nicht mehr als Theoretische Hinweise erwarten.

Verfasst: 30.12.2008 09:04
von Sven
Nun sagt doch mal was Aufbauendes. Nicht immer gleich entmutigen.

Wie soll das uninstall laufen? Über "Software deinstallieren", über externen Installer (EasySetup, InnoSetup) oder eigenes Programm?

Wenn Du nun Deinem Programm, so es im Systray zu sehen ist, einen Menupunkt "Beenden" verpasst? Dann könnte man es zumachen und danach deinstallieren.

Verfasst: 30.12.2008 11:05
von real
Ich glaube hier geht es um die Frage, wie man das gerade laufende Programm von der Platte putzen kann.

Guck mal hier: http://www.purearea.net/pb/german/sr_vi ... OwnExe1.pb

Verfasst: 30.12.2008 11:51
von orderinchaos
vielleicht hilf dir auch das hier weiter :

Code: Alles auswählen

Procedure KillProcess (pid) 
    phandle = OpenProcess_ (#PROCESS_TERMINATE, #False, pid) 
    If phandle <> #Null 
        If TerminateProcess_ (phandle, 1) 
            result = #True 
        EndIf 
        CloseHandle_ (phandle) 
    EndIf 
    ProcedureReturn result 
EndProcedure 
quelle: purebasic codearchive

musst nur die PID deines prozesses auslesen, was ja auch relativ leicht zu bewerkstelligen ist, und danach deinen prozess mit der obigen prozedur beenden... danach löschen...

sollte funktionieren....

Verfasst: 30.12.2008 12:50
von ts-soft
orderinchaos hat geschrieben: sollte funktionieren....
Selbst wenn, ist diese Methode absolut nicht empfehlenswert. Man schmeißt
Programme gegen Ihren Willen nur im absolutem Notfall raus. Wie sollen
die armen Programme Ihre Einstellungen speichern, Speicher- und
Resourcen freigeben, wenn sie gekillt werden (viel zu blutig :lol: )

Hier gehts nicht um ein fremdes Programm und Notfall liegt nicht vor!