Probleme mit KillProcess ( SysTrayIcon )

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

Probleme mit KillProcess ( SysTrayIcon )

Beitrag von rayman1970 »

Hi !
Wenn ich mit KillProcess ein Programm stoppe ist das SysTrayIcon immer noch da . Wie bekomme ich es weg ???

Code: Alles auswählen

pid = GetProcessPID( "das programm.exe")  : KillProcess (pid)
Hat einer von Euch eine Idee ?

Gruss Rayman
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von Programie »

Versuche es mal mit diesem Code:

Code: Alles auswählen

KillAllProcess("Prozessname.exe",0)
;Syntax: "Prozessname.exe" = name des Prozesses
;Syntax: 0 = Exitcode (???)
oder gehe mit der Maus kurz über das SysTrayIcon. Dann müsste es eigentlich nicht mehr vorhanden sein! :) :D :mrgreen:
BildBildBildBild
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

Beitrag von rayman1970 »

Hi Programie !

Code: Alles auswählen

KillAllProcess("Prozessname.exe",0)
Das habe ich na klar auch schon probiert , ist aber eh dieselbe Funktion .
oder gehe mit der Maus kurz über das SysTrayIcon. Dann müsste es eigentlich nicht mehr vorhanden sein!
Das Icon soll von alleine verschwinden !

Gruss Rayman
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Dann musst du den Systray aktualisieren lassen. Frag mich aber nicht, wie. /:->
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

@rayman1970
Mit KILLProcess ist das doch nichts anderes als wie wenn man mit dem Taskmessenger in den Processen einen Proces beendet. Oder irre ich mich?

Wenn ich das jedenfals mache bleibt bei mir auch das Icon im SysTray und verschwindet erst nach dem ich mit der Maus darübergefahren bin. Ich Habe mir bis jetzt immer eingebildet das, dass an meinem Langsamen Rechner liegt aber dem scheint ja nicht zu sein. Jetzt glaube ich ehr an einem weieren Bug von Micosoft.
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 »

Bei KillProcess wird der Speicher nicht aufgeräumt, deshalb das Icon im Tray. Erst wenn Windows es neuzeichnet, weil Du mit der Maus drüberfährst, wird es gelöscht, da ja das Objekt nicht mehr vorhanden. Ist kein MS-Fehler. Programme sollten ja auch nicht abgeschossen werden, sondern möglichst normal beendet werden. Bleibt ja sonst zuviel Müll im Speicher.
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
Benutzeravatar
deMattin
Beiträge: 87
Registriert: 30.08.2004 13:36
Wohnort: Ruhrpott
Kontaktdaten:

Beitrag von deMattin »

Versuch's mal damit:

Code: Alles auswählen

; Taskleiste verstecken und wieder anzeigen bzw. refreshen,
taskbarhnd.l = FindWindow_("Shell_TrayWnd", 0)
If taskbarhnd <> 0
  ShowWindow_(taskbarhnd, 0) 
  Delay(10)
  ShowWindow_(taskbarhnd, 1)
EndIf
Gruß,
Martin
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Man könnte es auch so versuchen:
Jedes Fenster des Programms ermitteln und dann ein #WM_Quit mit
SendMessage() zu schicken. Wenn du irgendwann das Hauptfenster
getroffen hast, wird es dann das Programm zum Beenden bringen
und das Icon aus der Systray nehmen.
Bild
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

Beitrag von rayman1970 »

Hi MVXA !
Man könnte es auch so versuchen:
Jedes Fenster des Programms ermitteln und dann ein #WM_Quit mit
SendMessage() zu schicken. Wenn du irgendwann das Hauptfenster
getroffen hast, wird es dann das Programm zum Beenden bringen
und das Icon aus der Systray nehmen.
Ich werde es wohl so machen wie du es vorgeschlagen hast . Die Idee hatte ich auch schon , aber es ist doch ganz schön umständlich ! Einfacher wäre es na klar den SysTray Bereich zu aktualisieren .

Gruss Rayman
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Ist auch die Programm freundlichste Methode so. Da kann das Programm
noch alle geöffneten Handels schließen und Dateien speichern. Man muss
ja nicht immer gleich die Holzhammer Methode nehmen und alles kurz und
klein hauen.
Bild
Antworten