![]() |
Aktuellen Mauszeiger Abfragen..
Hallo Zusammen!
Gibt es den keine Möglichkeit den aktuellen Mauszeiger abzufragen... Und zwar nicht das Icon sondern das ID... Ich möchte einfach nur wissen: Aktueller Mauszeiger ist z.b. : crHandPoint Von mir aus auch das Windows ID : IDC_HAND Nochmal nicht sowas..:
Delphi-Quellcode:
procedure DrawCursor(ScreenShotBitmap : TBitmap);
var r: TRect; CI: TCursorInfo; Icon: TIcon; II: TIconInfo; begin CI.cbSize := SizeOf(CI); if GetCursorInfo(CI) then if CI.Flags = CURSOR_SHOWING then begin r := ScreenShotBitmap.Canvas.ClipRect; Icon := TIcon.Create; try Icon.Handle := CopyIcon(CI.hCursor); if GetIconInfo(Icon.Handle, II) then begin ScreenShotBitmap.Canvas.Draw( ci.ptScreenPos.x - Integer(II.xHotspot) - r.Left, ci.ptScreenPos.y - Integer(II.yHotspot) - r.Top, Icon ); end; finally Icon.Free; end; end; end; Mavarik :wall: |
Re: Aktuellen Mauszeiger Abfragen..
Naja, eine Art GetCursorID gibt es ja nicht und der Cursor selbst ist ja nur eine Graphic.
Die Cursor ID wird ja nicht im System beim setzen eines Cursors (SetCursor();) gespeichert. (glaub ich mal) Man müsste nun das akt. Cursorbild mit allen anderen Cursorbildern vergleichen um heraus zu finden welcher gerade gesetzt ist. |
Re: Aktuellen Mauszeiger Abfragen..
|
Re: Aktuellen Mauszeiger Abfragen..
Hallo,
GetCursor liefert ein Cursor-Handle, nicht die gewünschte Cursor-ID. Die von Delphi verwendete ID lässt sich aber relativ leicht aus dem Handle bestimmen:
Delphi-Quellcode:
Unschön ist natürlich die feste Untergrenze für die Schleife, aber mir ist kein "offizieller" Weg bekannt, diese Grenze zu ermitteln.
// uses Windows, Forms
function GetActiveCursor: TCursor; var CursorHandle: HCURSOR; begin CursorHandle := GetCursor; for Result := crSizeAll to Screen.CursorCount do if (Screen.Cursors[Result] = CursorHandle) then Exit; Result := crDefault; end; Gruß Hawkeye |
Re: Aktuellen Mauszeiger Abfragen..
Zitat:
|
Re: Aktuellen Mauszeiger Abfragen..
Hallo,
eine allgemeine Lösung kann es garnicht geben, weil ja jedes Programm den Cursor mit einer eigenen Bitmap programmieren kann, und viele tun das auch, einschliesslich Delphi (crHourGlass ist nicht Windows IDC_WAIT). Standardlösungen wie oben können höchstens die ID von Windows-eigenen Cursoren bestimmen, aber so muss der Cursor momentan ja nicht aussehen. Die Information wird in CreateCursor verarbeitet, aber dazu gibt es keinen Weg zurück. Gruss Reinhard |
Re: Aktuellen Mauszeiger Abfragen..
Zitat:
crSQLWait sieht aber wie was Eigenes aus. Zitat:
|
Re: Aktuellen Mauszeiger Abfragen..
![]() |
Re: Aktuellen Mauszeiger Abfragen..
Zitat:
Das Problem ist das die Funktion GetIconInfo nur dann funktioniert wenn die Maus auch dargestellt wird... Als mit der Schleife über alle ID'S klappt es nicht, weil sich dafür die Maus auch noch bewegt haben muss.. Zitat:
schon vorhanden ist... Bedeutet das mit jedem Setcursor die Liste immer größer wird... Zitat:
Vielleicht gibt es eine Funktion die den Windows Status ausgibt, damit man selber den Cursor setzen kann? Mavarik |
AW: Re: Aktuellen Mauszeiger Abfragen..
Zitat:
Hat keiner ne Idee wie man rauskriegt, dass Windows gerade die Maus auf resize oder so umgeschaltet hat? Mavarik :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz