Anwendung Hide to Systray

Anfängerfragen zum Programmieren mit PureBasic.
Simon74
Beiträge: 60
Registriert: 04.05.2014 10:05

Anwendung Hide to Systray

Beitrag von Simon74 »

Hallo,

ich möchte das "MainWindow" verstecken, die Anwendung nur als Systray anzeigen, sollte so ja Systemübergreifend funktionieren.
Die Anwendung soll sich NUR über den Exit im Systray schliessen (end).
Wie komme ich zum passendeden "Event" um darauf zu reagieren ?

Code: Alles auswählen

Enumeration
  #Img_Exit16
  #Img_Systray
  #Systray_Exit
  #test
EndEnumeration

;Images laden
UsePNGImageDecoder()
CatchImage(#Img_Systray, ?Img_Systray)
CatchImage(#Img_Exit16, ?Img_Exit16)

Procedure EventHandler()
  Select Event()
      
    Case #PB_Event_CloseWindow
      ;End
      HideWindow(0,1)
  
    Case #PB_Event_Gadget
      Debug "Button"
      
    Case #PB_Event_SysTray
      Select EventType()
        Case #PB_EventType_LeftClick, #PB_EventType_RightClick
          Debug "!"
          HideWindow(0,0)          
          DisplayPopupMenu(0, WindowID(0))
      EndSelect
    
    Case #PB_Event_Menu
      Debug "ZZZ"
      Select EventType() 
        Case #test : Debug "3"
        Case #Systray_Exit : Debug "2"
      EndSelect
  EndSelect
EndProcedure

Procedure Systray(WindowID)
  AddSysTrayIcon(1, WindowID(0), ImageID(#Img_Systray))
  If CreatePopupImageMenu(0)      ; hier beginnt das Erstellen des Popup-Menüs...
    MenuItem(#Systray_Exit, "Exit",ImageID(#Img_Exit16))        
  EndIf
  BindEvent(#PB_Event_SysTray, @EventHandler())
  BindEvent(#PB_Event_Menu, @EventHandler())
EndProcedure

  OpenWindow(0, 100, 100, 300, 100, "", #PB_Window_SizeGadget | #PB_Window_SystemMenu)
  Systray(0)
  ButtonGadget(0, 10, 10, 100, 30, "Test")
  
  ; Verwendung eines einzigen Callbacks für alle Ereignisse
  BindGadgetEvent(0, @EventHandler())
  BindEvent(#PB_Event_CloseWindow, @EventHandler())
  
  Repeat
    WaitWindowEvent()
  ForEver

DataSection
  Img_Systray: :IncludeBinary "Images/systray.png"
  Img_Exit16:  :IncludeBinary "Images/exit16.png"
EndDataSection
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Anwendung Hide to Systray

Beitrag von ccode_new »

Hallo Simon74,

es ist eigentlich ganz einfach.

Du machst nur einen kleinen Fehler.

Hier:

Code: Alles auswählen

Case #PB_Event_Menu
      Debug "ZZZ"
      Select EventType()
        Case #test : Debug "3"
        Case #Systray_Exit : Debug "2"
      EndSelect
sollte statt: EventType() folgendes stehen:

Code: Alles auswählen

Select EventMenu()
        Case #test : Debug "3"
        Case #Systray_Exit : Debug "2"
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Simon74
Beiträge: 60
Registriert: 04.05.2014 10:05

Re: Anwendung Hide to Systray

Beitrag von Simon74 »

:) Vielen Dank
Antworten