You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.9 KiB
59 lines
1.9 KiB
5 years ago
|
!include "LogicLib.nsh"
|
||
|
|
||
|
!ifndef CLSCTX_INPROC_SERVER
|
||
|
!define CLSCTX_INPROC_SERVER 1
|
||
|
!endif
|
||
|
|
||
|
!define CLSID_ITaskbarList {56fdf344-fd6d-11d0-958a-006097c9a090}
|
||
|
|
||
|
!define IID_ITaskbarList3 {ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}
|
||
|
!define ITaskbarList3->SetProgressState $ITaskbarList3->10
|
||
|
!define ITaskbarList3->SetProgressValue $ITaskbarList3->9
|
||
|
|
||
|
!define TBPF_NOPROGRESS 0x00000000 ; Normal state / no progress bar
|
||
|
!define TBPF_INDETERMINATE 0x00000001 ; Marquee style progress bar
|
||
|
!define TBPF_NORMAL 0x00000002 ; Standard progress bar
|
||
|
!define TBPF_ERROR 0x00000004 ; Red taskbar button to indicate an error occurred
|
||
|
!define TBPF_PAUSED 0x00000008 ; Yellow taskbar button to indicate user attention
|
||
|
; (input) is required to resume progress
|
||
|
|
||
|
Var ITaskbarList3
|
||
|
|
||
|
!macro TBProgress_Init
|
||
|
!ifndef TBProgressInitialized
|
||
|
!define TBProgressInitialized
|
||
|
${Unless} ${Silent}
|
||
|
System::Call "ole32::CoCreateInstance( \
|
||
|
g '${CLSID_ITaskbarList}', \
|
||
|
i 0, \
|
||
|
i ${CLSCTX_INPROC_SERVER}, \
|
||
|
g '${IID_ITaskbarList3}', \
|
||
|
*i .s)"
|
||
|
Pop $ITaskbarList3
|
||
|
${Else}
|
||
|
StrCpy $ITaskbarList3 0
|
||
|
${EndIf}
|
||
|
!endif
|
||
|
!macroend
|
||
|
!define TBProgress_Init `!insertmacro TBProgress_Init`
|
||
|
|
||
|
!macro TBProgress_Progress Val Max
|
||
|
${TBProgress_Init}
|
||
|
${If} $ITaskbarList3 <> 0
|
||
|
System::Call "${ITaskbarList3->SetProgressValue}(i$HWNDPARENT, l${Val}, l${Max})"
|
||
|
${EndIf}
|
||
|
!macroend
|
||
|
!define TBProgress_Progress `!insertmacro TBProgress_Progress`
|
||
|
|
||
|
!macro TBProgress Val
|
||
|
${TBProgress_Progress} ${Val} 100
|
||
|
!macroend
|
||
|
!define TBProgress `!insertmacro TBProgress`
|
||
|
|
||
|
!macro TBProgress_State State
|
||
|
${TBProgress_Init}
|
||
|
${If} $ITaskbarList3 <> 0
|
||
|
System::Call "${ITaskbarList3->SetProgressState}(i$HWNDPARENT, i${TBPF_${State}})"
|
||
|
${EndIf}
|
||
|
!macroend
|
||
|
!define TBProgress_State `!insertmacro TBProgress_State`
|