Page 1 of 1

Missing function SysTrayIconID

Posted: Sun Apr 03, 2022 5:14 pm
by mk-soft
Missing SysTrayIconID(#SysTrayIcon) for API functions

Internal not official solution

Code: Select all

Procedure SysTrayIconID(SysTrayIcon)
  Protected *object
  *object = IsSysTrayIcon(SysTrayIcon)
  If *object
    ProcedureReturn PeekI(*object)
  Else
    ProcedureReturn 0
  EndIf
EndProcedure

Re: Missing function SysTrayIconID

Posted: Sun Apr 03, 2022 7:22 pm
by Kwai chang caine
Thanks for this new function 8)

Is it normal i have two time the same ID ? :shock:

Code: Select all

Procedure SysTrayIconID(SysTrayIcon)
 Protected *object
 *object = IsSysTrayIcon(SysTrayIcon)
 If *object
  ProcedureReturn PeekI(*object)
 Else
  ProcedureReturn 0
 EndIf
EndProcedure

OpenWindow(0, 100, 150, 300, 100, "PureBasic - SysTray Example", #PB_Window_SystemMenu)

IconName$ = #PB_Compiler_Home + "examples/sources/Data/CdPlayer.ico"

AddSysTrayIcon(1, WindowID(0), LoadImage(0, IconName$))
AddSysTrayIcon(2, WindowID(0), LoadImage(1, IconName$))
SysTrayIconToolTip(1, "Icon 1")
SysTrayIconToolTip(2, "Icon 2")

Debug SysTrayIconID(1)
Debug SysTrayIconID(2)

Repeat
 Event = WaitWindowEvent()
 
 If Event = #PB_Event_SysTray
  If EventType() = #PB_EventType_LeftDoubleClick
   MessageRequester("SysTray", "Left DoubleClick on SysTrayIcon "+Str(EventGadget()),0)
   
   ChangeSysTrayIcon (EventGadget(), LoadImage(0, IconName$))
   SysTrayIconToolTip(EventGadget(), "Changed !")
  EndIf
  
 EndIf
Until Event = #PB_Event_CloseWindow

Re: Missing function SysTrayIconID

Posted: Sun Apr 03, 2022 8:29 pm
by mk-soft
With Linux and macOS it fits. I don't know under Windows.
Since there is no PB SDK via the Systray, this is without guarantee.

Re: Missing function SysTrayIconID

Posted: Mon Apr 04, 2022 6:01 pm
by Kwai chang caine
Ok thanks :wink: