Code : Tout sélectionner
DisableASM
CompilerIf #PB_Compiler_EnableExplicit
EnableExplicit
CompilerEndIf
DeclareModule Windows
Declare TaskBarProgressInit (hWnd.i, State.i)
Declare TaskBarProgressValue (hWnd.i, Value.q, Total.q)
#tbpf_noprogress = $0
#tbpf_indeterminate = $1
#tbpf_normal = $2
#tbpf_error = $4
#tbpf_paused = $8
EndDeclareModule
Module Windows
DisableASM
CompilerIf #PB_Compiler_EnableExplicit
EnableExplicit
CompilerEndIf
Procedure TaskBarProgressInit(hWnd.i, State.i)
Interface ITaskbarList3 Extends ITaskbarList2
SetProgressValue (hWnd, ullCompleted.q, ullTotal.q)
SetProgressState (hWnd, tbpFlags.l)
RegisterTab (hWndTab, hWndMDI)
UnregisterTab (hWndTab)
SetTabOrder (hWndTab, hWndInsertBefore)
SetTabActive (hWndTab, hWndMDI, dwreserved.l)
ThumbBarAddButtons (hWnd, cButtons.l, *pButton )
ThumbBarUpdateButtons (hWnd, cButtons.l, *pButton)
ThumbBarSetImageList (hWnd, himl)
SetOverlayIcon (hWnd, hIcon, pszDescription.p-bstr)
SetThumbnailTooltip (hWnd, pszTip.p-bstr)
SetThumbnailClip (hWnd, *prcClip.RECT)
EndInterface
Protected TBL.ITaskbarList3
If OSVersion() >= #PB_OS_Windows_7
CoInitialize_(0)
If CoCreateInstance_(?CLSID_TaskBarList, 0, 1, ?IID_ITaskBarList3, @TBL) = #S_OK
TBL\HrInit()
TBL\SetProgressState(hWnd, State)
TBL\Release()
EndIf
CoUninitialize_()
EndIf
EndProcedure
Procedure TaskBarProgressValue(hWnd.i, Value.q, Total.q)
Protected TBL.ITaskbarList3
If OSVersion() >= #PB_OS_Windows_7
CoInitialize_(0)
If CoCreateInstance_(?CLSID_TaskBarList, 0, 1, ?IID_ITaskBarList3, @TBL) = #S_OK
TBL\HrInit()
TBL\SetProgressValue(hWnd, Value, Total)
TBL\Release()
EndIf
CoUninitialize_()
EndIf
EndProcedure
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
IID_ITaskBarList3:
Data.l $EA1AFB91
Data.w $9E28, $4B86
Data.b $90, $E9, $9E, $9F, $8A, $5E, $EF, $AF
EndDataSection
EndModule
CompilerIf #PB_Compiler_IsMainFile
OpenWindow (0, 0, 0, 800, 600, "Progress TaskBar", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
Define.i event, i, j = 1
Windows::TaskBarProgressInit(WindowID(0), Windows::#tbpf_normal)
Repeat
event = WaitWindowEvent(10)
i + j
If i < 1
j = 1
EndIf
If i > 99
j = -1
EndIf
Windows::TaskBarProgressValue(WindowID(0), i, 100)
Until event = #PB_Event_CloseWindow
CompilerEndIf