Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: aktuellen Cursor mit Delphi auslesen

  Alt 15. Mai 2007, 22:27
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat