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:

Beitrag von rayman1970 »

Hi MVXA !

Ich habe es jetzt so gemacht wie wir es oben besprochen haben .

Hier mal der Code vom Programm das beendet werden soll .

Code: Alles auswählen

OpenWindow(0,0,0,400,400,1|#WS_SYSMENU,"HALLO")

CreateGadgetList(WindowID())


ButtonGadget(1,10,10,100,20,"ENDE")

Repeat
  event = WaitWindowEvent()
 
  
  If event = #PB_Event_Gadget
    If EventGadgetID() = 1
    CloseWindow_(0)
   End
    EndIf
  EndIf


Until event = #WM_CLOSE 
Und hier das Programm um es zu beenden .

Code: Alles auswählen

Handle = FindWindow_(0,"HALLO")

Procedure MAKELONG(low,high)
  ProcedureReturn low | (high<<16)
EndProcedure

Procedure ListChild(hwnd, Parameter)
  WindowClass.s = Space(255)
 
  GetClassName_(hwnd, WindowClass, 255)
 
  If WindowClass = "Button"
    Laenge    = SendMessage_(hwnd,#WM_GETTEXTLENGTH,0,0) + 1
    String.s  = Space(Laenge)
    SendMessage_(hwnd,#WM_GETTEXT,Laenge,@String)
   
    If String = "ENDE" ; "ENDE"
      SendMessage_(GetParent_(hwnd),#WM_COMMAND, MAKELONG(GetDlgCtrlID_(hwnd),0) ,hwnd)
  
    Else ;<--------------
      ProcedureReturn #True  ;<--------------
    EndIf
   
    ProcedureReturn #False
   
  EndIf
  ProcedureReturn #True
EndProcedure

EnumChildWindows_(Handle,@ListChild(), 0) 
Es klappt , soweit also ganz gut könnte man meinen . Nur ich muss schon wieder mit der Maus über das Fenster gehen bevor es endlich weg ist !!!!

Ich habe mir überlegt das ich es anders probiere .

Meine Idee :
Das Schliessprogramm muss einen Wert ( Global ) an das andere Programm übermitteln. Aber ich weiss noch nicht wie ich es realisieren soll .

Gruss Rayman
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Laurin hat geschrieben:Dann musst du den Systray aktualisieren lassen. Frag mich aber nicht, wie. /:->
Einfach den Prozess Explorer.EXE beenden... *g* :lol:

Auch, wenn man den Prozess manuell mit dem Taskmanager beendet, wird der Prozess fast immer (zu 99,999999999999%) neu gestartet. Jedenfalls unter XP.
Unter Windows 98 gibt es zwei grundlegende Prozesse: Explorer.Exe und Systray.EXE. Wie sich das hier verhält, muss man testen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten