Prozess Beenden

Anfängerfragen zum Programmieren mit PureBasic.
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Prozess Beenden

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wenn das dein programm ist, dann wäre es doch kein problem, das von intern zu beenden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Prozess Beenden

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Prozess Beenden

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Prozess Beenden

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Prozess Beenden

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag 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.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag 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
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag 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....
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten