Seite 1 von 2
Probleme mit KillProcess ( SysTrayIcon )
Verfasst: 02.01.2006 20:22
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
Verfasst: 02.01.2006 20:27
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!

Verfasst: 03.01.2006 00:06
von rayman1970
Hi Programie !
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
Verfasst: 03.01.2006 00:17
von Laurin
Dann musst du den Systray aktualisieren lassen. Frag mich aber nicht, wie.

Verfasst: 03.01.2006 00:20
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.
Verfasst: 03.01.2006 00:31
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.
Verfasst: 03.01.2006 02:25
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
Verfasst: 03.01.2006 03:41
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.
Verfasst: 03.01.2006 13:26
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
Verfasst: 03.01.2006 13:56
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.