Code: Alles auswählen
Structure IconData
cbSize.l
hwnd.l
uID.l
uFlags.l
uCallbackMessage.l
hIcon.l
szTip.b[128]
dwState.l
dwStateMask.l
szInfo.b[256]
StructureUnion
uTimeout.l
uVersion.l
EndStructureUnion
szInfoTitle.b[64]
dwInfoFlags.l
EndStructure
Procedure.w GetDataSize()
Protected BuffSize.l, databuf.s, Result.i, nVerMajor.i, lpBuffer.i, puLen.l
If OpenLibrary(1,"VERSION.DLL")
BuffSize.l= CallFunction(1,"GetFileVersionInfoSizeW",@"shell32.dll",0)
If BuffSize>0
databuf.s=Space(BuffSize-1)
;Dim databuf.b(BuffSize-1)
Result=CallFunction(1,"GetFileVersionInfoW",@"shell32.dll",0,BuffSize,@databuf)
Result=CallFunction(1,"VerQueryValueW",@databuf,@"\",@lpBuffer,@puLen)
CopyMemory(lpBuffer+10,@nVerMajor,2)
EndIf
CloseLibrary(1)
Select nVerMajor
Case 6
ProcedureReturn #NOTIFYICONDATA_V3_SIZE
Case 5
ProcedureReturn #NOTIFYICONDATA_V2_SIZE
Default
ProcedureReturn #NOTIFYICONDATA_V1_SIZE
EndSelect
EndIf
EndProcedure
Procedure ShowBalloonTip(SystrayID.i, WindowHwnd.i, title.s,maintext.s,tooltiptext.s,IconType.l)
Protected Balloon.IconData\cbSize=GetDataSize(), Result.l, TempLib.i
Balloon\hwnd = WindowHwnd
Balloon\uId = SystrayID
Balloon\uFlags = #NIF_INFO | #NIF_MESSAGE | #NIF_ICON | #NIF_TIP
Balloon\hIcon = ImageID(0)
Balloon\dwState = #NIS_SHAREDICON
Balloon\uCallbackMessage=#WM_USER
Balloon\uTimeout = 30000
If OSVersion() < #PB_OS_Windows_2000
Balloon\uVersion = 0
Else
Balloon\uVersion = #NOTIFYICON_VERSION
EndIf
Balloon\dwInfoFlags = IconType
If Balloon.IconData\cbSize=#NOTIFYICONDATA_V1_SIZE
PokeS(@Balloon\szTip, tooltiptext,64, #PB_Ascii)
Else
PokeS(@Balloon\szTip, tooltiptext,128, #PB_Ascii)
PokeS(@Balloon\szInfo,maintext.s,255, #PB_Ascii)
PokeS(@Balloon\szInfoTitle,title.s,63, #PB_Ascii)
EndIf
TempLib = OpenLibrary(#PB_Any,"shell32.dll")
Result= CallFunction(TempLib,"Shell_NotifyIcon",#NIM_MODIFY,@Balloon)
CloseLibrary(TempLib)
EndProcedure
If 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$))
ShowBalloonTip(1, WindowID(0), "Title", "Text", "Tooltiptext", #NIIF_USER)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf 