unit Unit1;
interface
uses
Windows, Messages, ShlObj, ActiveX;
Procedure WinMain;
var
WndClassEx : TWndClassEx;
Form : HWND;
MMsg: Msg;
tbCreated : Cardinal;
pButtons : array[0..3] of TThumbButton;
tb : iTaskBarList4;
implementation
procedure InitTaskBar;
var
z:integer;
begin
CoCreateInstance(CLSID_TaskbarList, nil, CLSCTX_ALL, iTaskBarList4,tb);
for z in [0..3] do
begin
pButtons[z].iId := z;
pButtons[z].iBitmap := z;
pButtons[z].dwMask := THB_BITMAP + THB_TOOLTIP;
end;
pButtons[0].szTip := '1';
pButtons[1].szTip := '2';
pButtons[2].szTip := '3';
pButtons[3].szTip := '4';
// tb.ThumbBarSetImageList(Form, ImgList);
tb.ThumbBarAddButtons(Form, length(pButtons), @pButtons);
tb.SetProgressValue(Form, 50, 100);
end;
Function WinProc(Wnd: HWND; Msg : UINT; WParam : WPARAM; LParam: LPARAM): lresult; Stdcall;
Begin
Result := 0;
Case Msg Of
WM_CREATE: tbCreated := RegisterWindowMessage('TaskbarButtonCreated');
WM_CLOSE: DestroyWindow(Wnd);
WM_DESTROY: PostQuitMessage(0);
Else
Result := DefWindowProc(Wnd, Msg, WParam, LParam);
End;
if msg = tbCreated then
InitTaskBar;
End;
Procedure WinMain;
Begin
FillChar(WndClassEx, SizeOf(TWndClassEx), 0);
WndClassEx.cbSize := SizeOf(TWndClassEx);
WndClassEx.lpszClassName := 'APIWindow';
WndClassEx.style := CS_HREDRAW Or CS_VREDRAW;
WndClassEx.hInstance := HInstance;
WndClassEx.lpfnWndProc := @WinProc;
WndClassEx.cbClsExtra := 0;
WndClassEx.cbWndExtra := 0;
WndClassEx.hIcon := LoadIcon(HInstance, MakeIntResource('MAINICON'));
WndClassEx.hIconSm := LoadIcon(HInstance, MakeIntResource('MAINICON'));
WndClassEx.hCursor := LoadCursor(0, IDC_ARROW);
WndClassEx.hbrBackground := GetStockObject(LTGRAY_BRUSH);
WndClassEx.lpszMenuName := NIL;
If RegisterClassEx(WndClassEx) <> 0 Then
Begin
Form := CreateWindowEx(0, WndClassEx.lpszClassName, '123',WS_CLIPCHILDREN or WS_OVERLAPPEDWINDOW,
(GetSystemMetrics(SM_CXSCREEN) - 500) div 2, (GetSystemMetrics(SM_CYSCREEN) - 500) div 2, 500, 500, 0, 0, HInstance, NIL);
If Form = 0 Then
MessageBox (0, 'Окно1 не создалось!', 'Ошибка', MB_OK Or MB_ICONHAND)
Else
Begin
ShowWindow(Form, SW_SHOWNORMAL);
While GetMessage(MMsg, 0, 0, 0) Do
Begin
TranslateMessage(MMsg);
DispatchMessage(MMsg);
End;
Halt(MMsg.WParam);
End;
End
Else
MessageBox(0, 'Невозможно зарегистрировать класс окна1', 'Ошибка', MB_OK Or MB_ICONHAND);
End;
end.