Update : Windows 7 Notify Icon
Posted: Thu Oct 27, 2011 6:33 am
Windows 7 System Tray and Notify Icon using PB
No limit to the functions that can be atchived
Have fun
Edit :Code updated
No limit to the functions that can be atchived
Code: Select all
Global hwnd
CreateImage(0, 20, 20, 32|#PB_Image_Transparent)
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_Gradient|#PB_2DDrawing_AllChannels)
BackColor (RGBA(40,250,250,200))
FrontColor(RGBA(0,0,0,0))
LinearGradient(0, 0, 20, 20)
Box(0,0,20,20)
StopDrawing()
CreateImage(1, 20, 20, 32|#PB_Image_Transparent)
StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_Gradient|#PB_2DDrawing_AllChannels)
BackColor (RGBA(0,100,230,230))
FrontColor(RGBA(250,120,120,0))
LinearGradient(0, 0, 20, 20)
Box(0,0,20,20)
StopDrawing()
Procedure HFTaskBar(hWnd, Flag)
Protected TBL.ITaskbarList
CoInitialize_(0)
If CoCreateInstance_(?CLSID_TaskBarList, 0, 1, ?IID_ITaskBarList, @TBL) = #S_OK
TBL\HrInit()
If Flag
TBL\DeleteTab(hWnd)
Else
TBL\AddTab(hWnd)
EndIf
TBL\Release()
EndIf
CoUninitialize_()
DataSection
CLSID_TaskBarList:
Data.l $56FDF344
Data.w $FD6D, $11D0
Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
IID_ITaskBarList:
Data.l $56FDF342
Data.w $FD6D, $11D0
Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
EndDataSection
EndProcedure
Procedure NotifyIcon(Parameter)
TrayWnd = FindWindow_("Shell_TrayWnd", 0)
TrayNofifyWnd = FindWindowEx_(TrayWnd, 0, "TrayNotifyWnd", 0)
GetWindowRect_(TrayNofifyWnd,r.RECT)
width = 15
height = 15
x=r\left - 20
y=r\top + 13
Repeat
GetWindowRect_(TrayNofifyWnd,r.RECT)
x=r\left - 20
If FindWindow_("CiceroUIWndFrame", 0) > 65704
x=r\left - 65
EndIf
MoveWindow_(hwnd,x,y,width,height,1)
BringWindowToTop_(hwnd)
Delay(Parameter)
ForEver
EndProcedure
TrayWnd = FindWindow_("Shell_TrayWnd", 0)
TrayNofifyWnd = FindWindowEx_(TrayWnd, 0, "TrayNotifyWnd", 0)
;NotifyButton = FindWindowEx_(TrayNofifyWnd, #Null, "Button", #Null)
GetWindowRect_(TrayNofifyWnd,r.RECT)
width = 15
height = 15
x=r\left - 20
y=r\top + 13
If FindWindow_("CiceroUIWndFrame", 0) > 65704
x=r\left - 65
EndIf
; SHAppBarMessage_(#ABM_GETTASKBARPOS,Pos.AppBarData)
;
; ; If Pos\uEdge <> 1 And Pos\uEdge <> 3
; ; End
; ; EndIf
OpenWindow(0,0,0,400,300,"",#PB_Window_SystemMenu|#PB_Window_MaximizeGadget| #PB_Window_MinimizeGadget| #PB_Window_SizeGadget|#PB_Window_ScreenCentered )
ButtonGadget(0,10,270,80,22,"Show Icon")
CreatePopupMenu(0)
MenuItem(1, "Open")
MenuItem(2, "Save")
MenuItem(3, "Save as")
MenuItem(4, "Quit")
CloseSubMenu()
CreatePopupMenu(1)
MenuItem(1, "This is a Test")
CloseSubMenu()
hwnd = OpenWindow(1,x,y,width,height,"",#PB_Window_BorderLess)
HFTaskBar(WindowID(1), #True)
StickyWindow(1,1)
CanvasGadget(1,0,0,15,15)
SetGadgetAttribute(1, #PB_Canvas_Cursor,#PB_Cursor_Hand)
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1))
Thread = CreateThread(@NotifyIcon(),200)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 0
HideWindow(1,0)
SetActiveWindow(0)
Case 1
Select EventType()
Case #PB_EventType_MouseEnter
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(0))
;DisplayPopupMenu(1, WindowID(0),x+10,y-15)
Case #PB_EventType_MouseLeave
SetGadgetAttribute(1, #PB_Canvas_Image , ImageID(1))
Case #PB_EventType_LeftButtonDown
DisplayPopupMenu(0, WindowID(0),x,y-4)
Case #PB_EventType_RightButtonDown
HideWindow(1,1)
Case #PB_EventType_Focus
Case #PB_EventType_LostFocus
EndSelect
EndSelect
Case #PB_Event_SizeWindow
ResizeGadget(0,10, WindowHeight(0) - 30,80,22)
EndSelect
Until Quit = 1
Edit :Code updated