Есть ли в библиотеке функции для управления прогрессом на панели задач Windows?Добавлено (01.06.2021, 13:09)
---------------------------------------------
Сам спросил, сам отвечаю - есть такие функции, только в справке по библиотеке об этом ничего нет.
Вот оригинальный код решения этого вопроса: ProgressBar на окне TaskBar
Правда на Windows XP вылетает ошибка, что не есть хорошо, поэтому подредактировал код:
Код
#Include "window9.bi"
Dim As Integer ev, pct
Dim As HWND hwnd
Dim As RECT rec
Dim As ITaskbarList3 Ptr tl3
hwnd = OpenWindow("", 0, 0, 300, 80)
ProgressBarGadget(1, 10,10, 260, 20, 0, 100) ' полоска прогресса в окне
CoInitialize(Null) ' подключение COM объекта
CoCreateInstance(@CLSID_TaskBarList,Null,CLSCTX_INPROC_SERVER,@IID_ITaskBarList3,@tl3)
If tl3 Then ' если элемент поддерживается в текущей Windows
tl3->lpVtbl->HrInit(tl3)
tl3->lpVtbl->SetProgressValue(tl3,hwnd,0,100) ' начальная установка прогресса
tl3->lpVtbl->SetProgressState(tl3,hwnd,TBPF_NORMAL) ' нормальный режим (зелёный)
EndIf ' TBPF_PAUSED - режим паузы (желтый); TBPF_ERROR - режим ошибки (красный)
GetClientRect(hwnd, @rec) ' получам координаты окна
rec.right /= 2 : rec.bottom /= 2
If tl3 Then tl3->lpVtbl->SetThumbnailClip(tl3,hwnd, @rec)
Do
ev = WindowEvent()
If ev = 0 Then
If pct = 101 Then
FreeGadget(1)
SetWindowText(hwnd, "Ошибка")
If tl3 Then tl3->lpVtbl->SetProgressState(tl3,hwnd,TBPF_ERROR)
Else
SetWindowText(hwnd, Str(pct))
SetGadgetState(1, pct)
If tl3 Then tl3->lpVtbl->SetProgressValue(tl3,hwnd,pct,100)
pct += 1
Endif
Sleep 20
Endif
Sleep(1)
Loop Until ev = EventClose
If tl3 Then
tl3->lpVtbl->Release(tl3)
CoUninitialize() ' отключение COM объекта
EndIf