Цель изменить кнопку Пуск в панели задач(WIN7, XE8).
Пытаюсь откомпилировать такой код, но получаю ошибку несовместимости типов NativeUint и Cardinal
uses
Windows, SysUtils, MMSystem, Graphics;
var
HW : HWND;
DC : HDC;
R : TRect;
Buffer1 : TBitmap;
vx : Shortint = 2;
vy : Shortint = 1;
x : Byte = 6;
y : Byte = 10;
ID : Uint;
h : THandle;
procedure TimeProc(uTimerId, uMessage: Uint; dwUser, dw1, dw2: Dword)stdcall;
begin
Buffer1.Canvas.Ellipse(x - 3, y - 3, x + 3, y + 3);
if (x <= 2) or (x >= (R.Right - R.Left - 2)) then vx := -vx;
if (y <= 2) or (y >= (R.Bottom - R.Top - 2)) then vy := -vy;
x := x + vx;
y := y + vy;
Buffer1.Canvas.Ellipse(x - 3, y - 3, x + 3, y + 3);
BitBlt(DC,
0,
0,
R.Right - R.Left,
R.Bottom - R.Top,
Buffer1.Canvas.Handle,
0,
0,
SRCCOPY);
end;
begin
h := OpenEvent(EVENT_MODIFY_STATE, True, 'puskalka');
if h <> 0 then
begin
SetEvent(h);
Sleep(300);
CloseHandle(h);
Halt;
end;
HW := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);
GetWindowRect(HW, R);
DC := GetWindowDC(HW);
Buffer1 := TBitmap.Create;
Buffer1.Height := R.Bottom - R.Top;
Buffer1.Width := R.Right - R.Left;
Buffer1.Canvas.Brush.Color := clBtnFace;
Buffer1.Canvas.Pen.Color := clRed;
buffer1.Canvas.Pen.Mode := pmXor;
buffer1.Canvas.Ellipse(x - 3, y - 3, x + 3, y + 3);
ID := timeSetEvent(10, 1, Timeproc, 0, TIME_PERIODIC);
h := CreateEvent(nil, False, False, 'puskalka');
try
while WaitForSingleObject(h, 100) = WAIT_TIMEOUT do ;
finally
CloseHandle(h);
timeKillEvent(ID);
ReleaseDC(HW, DC);
Buffer1.Free;
end;
end.
Существуют ли ещё какие-то варианты решения данной задачи?
Спасибо