Un petit exemple pour ajouter une ProgressBar sur l'icône de la barre des tâches d'une fenêtre.
Uniquement pour Windows 7 et plus
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4.50
;
; Explication du programme :
; Barre de progression sur l'icone dans la barre des tâches
Procedure SetProgressTaskBar(hWnd, State)
; State = 0 : Pas de barre de progression
; State = 1 : Barre de progression uniquement pour afficher une activité sans indiqué de % de progression
; State = 2 : Barre de progression normale
; State = 4 : Arrêt de la progression à cause d'une erreur
; State = 8 : Progression en pause, attente de l'utilisateur
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
DataSection
CLSID_TaskBarList:
Data.l $56FDF344
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
EndProcedure
Procedure SetProgressTaskBarValue(hWnd, Completed.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, Completed, Total)
TBL\Release()
EndIf
CoUninitialize_()
EndIf
EndProcedure
; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Progression", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
End
EndIf
TextGadget(0, 0, 0, 300, 16, "Bare de progression sur l'icône de la barre des tâches :")
ComboBoxGadget(1, 0, 16, 300, 24)
AddGadgetItem(1, -1, "Aucune barre de progression")
AddGadgetItem(1, -1, "Barre de progression pour indiquer une activité")
AddGadgetItem(1, -1, "Barre de progression normale")
AddGadgetItem(1, -1, "Barre de progression : Erreur")
AddGadgetItem(1, -1, "Barre de progression : En pause")
SetGadgetState(1, 0)
TrackBarGadget(2, 0, 40, 300, 32, 0, 100)
SetGadgetState(2, 50)
HideGadget(2, 1)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget() ; Gadgets
Case 1
Position = GetGadgetState(1)
If Position >= 0 And Position <> GetGadgetData(1)
HideGadget(2, 1)
Select Position
Case 0
SetProgressTaskBar(WindowID(0), 0)
Case 1
SetProgressTaskBar(WindowID(0), 1)
Case 2
SetProgressTaskBar(WindowID(0), 2)
HideGadget(2, 0)
SetProgressTaskBarValue(WindowID(0), GetGadgetState(2) - GetGadgetAttribute(2, #PB_TrackBar_Minimum), GetGadgetAttribute(2, #PB_TrackBar_Maximum) - GetGadgetAttribute(2, #PB_TrackBar_Minimum))
Case 3
SetProgressTaskBar(WindowID(0), 4)
HideGadget(2, 0)
SetProgressTaskBarValue(WindowID(0), GetGadgetState(2) - GetGadgetAttribute(2, #PB_TrackBar_Minimum), GetGadgetAttribute(2, #PB_TrackBar_Maximum) - GetGadgetAttribute(2, #PB_TrackBar_Minimum))
Case 4
SetProgressTaskBar(WindowID(0), 8)
HideGadget(2, 0)
SetProgressTaskBarValue(WindowID(0), GetGadgetState(2) - GetGadgetAttribute(2, #PB_TrackBar_Minimum), GetGadgetAttribute(2, #PB_TrackBar_Maximum) - GetGadgetAttribute(2, #PB_TrackBar_Minimum))
EndSelect
SetGadgetData(1, Position)
EndIf
Case 2
SetProgressTaskBarValue(WindowID(0), GetGadgetState(2) - GetGadgetAttribute(2, #PB_TrackBar_Minimum), GetGadgetAttribute(2, #PB_TrackBar_Maximum) - GetGadgetAttribute(2, #PB_TrackBar_Minimum))
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow