Seite 1 von 1
Sys Tray
Verfasst: 09.03.2010 20:08
von netzcoder
Hallo, ich sitze gerade an einem Mini-Tool und hab mir gedacht das ich SysTray dafür gut nutzen kann. Hab mir in der Hilfe das Beispiel angeschaut und dann überlegt wie ich es hinkriegen wenn ich einen Rechtsklick auf das Icon mache das dann ein Popup-Menu. Muss ich für Sys Tray nen Fenster aufhaben? hab es auf Invisiable gesetzt weil eigentlich will ich nur nen Icon wo wenn ich draufklicke Start und Ende kommen soll und ich muss wissen was geklickt wurde.
Gibt es dafür Beispiele?
Euer netzcoder
Re: Sys Tray
Verfasst: 09.03.2010 20:26
von TomS
Ja. Du musst ein Fenster haben, wenn du Systray-Icons verwenden willst.
Du hast das Problem ja eigentlich schon alleine gelöst.
Das Fenster einfach mit #PB_Window_Invisible öffnen.
Zum Thema 'was geklickt wurde' wirst du in der Hilfe zum Popupmenü fündig.
Ein Beispiel habe ich gerade in 2 Minuten gebastelt. Streng dich ein bißchen an, schau in der Hilfe nach, dann kriegst du es auch ganz leicht hin.
Re: Sys Tray
Verfasst: 09.03.2010 20:34
von netzcoder
Jo das hab ich ja alles gemacht. Bloß irgendwie passt da was noch nicht... Nun ja ich schau nochmal
Re: Sys Tray
Verfasst: 09.03.2010 20:39
von mk-soft
Hab gerade etwas Zeit. Aus den PB-Beispiele zusammen geschustert.
Für das Icon habe ich eine API genommen.
Code: Alles auswählen
Enumeration
#Menu
EndEnumeration
Enumeration
#Menu_Start
#Menu_Stop
#Menu_Exit
EndEnumeration
If OpenWindow(0, 100, 150, 300, 100, "PureBasic - SysTray Example", #PB_Window_SystemMenu | #PB_Window_Invisible)
hIcon1 = LoadIcon_(0, #IDI_APPLICATION)
AddSysTrayIcon(1, WindowID(0), hIcon1)
SysTrayIconToolTip(1, "Icon 1")
If CreatePopupMenu(#Menu)
MenuItem(#Menu_Start, "Start")
MenuItem(#Menu_Stop, "Stop")
MenuBar()
MenuItem(#Menu_Exit, "Beenden")
EndIf
exit = 0
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick
DisplayPopupMenu(#Menu, WindowID(0))
EndIf
Case #PB_Event_Menu
Select EventMenu()
Case #Menu_Start
MessageRequester("Info", "Start...")
Case #Menu_Stop
MessageRequester("Info", "Stopp...")
Case #Menu_Exit
exit = 1
EndSelect
Case #PB_Event_CloseWindow
exit = 1
EndSelect
Until exit
EndIf
FF

Re: Sys Tray
Verfasst: 09.03.2010 20:40
von netzcoder
Nun klappt es! Danke! Fehler lag dadrin das ich eine falsche Reinfolge hatte und Event niemals da wo ich es abgefragt habe irgendeinen Inhalt hatte!
EDIT: Thanks für den beispielcode!