Moin,
mit dem Code kannst du den aktuellen Cursor auslesen, das ging zumindest bei mir unter WinXP und unter Win98.
Du kannst dann ja mit 2 Bitmap arbeiten und beide jedesmal miteinander vergleichen. Wenn sie unterschiedlich sind, hat sich der Cursor geändert.
Das wäre zumindest eine Möglichkeit.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
ico: TIcon;
ThreadID, CurrThrId: cardinal;
begin
ico:= TIcon.Create;
try
ThreadID := GetWindowThreadProcessID(WindowFromPoint(Mouse.CursorPos), nil);
CurrThrId := GetCurrentThreadId;
if ThreadID <> CurrThrId then
begin
if AttachThreadInput(ThreadID, CurrThrId, true) then
begin
ico.Handle := GetCursor;
AttachThreadInput(ThreadID, CurrThrId, false);
end;
end
else
ico.Handle := GetCursor;
Image1.Picture.Bitmap.Width := ico.Width;
Image1.Picture.Bitmap.Height := ico.Height;
Image1.Picture.Bitmap.Canvas.Pen.Color := Image1.Picture.Bitmap.Canvas.Brush.Color;
Image1.Picture.Bitmap.Canvas.Rectangle(0, 0, ico.Width, ico.Height);
Image1.Picture.Bitmap.Canvas.Draw(0, 0, ico);
finally
ico.Free;
end;
end;
Ob das auch bei Videospielen funktioniert ist allerdings wieder eine andere Sache.