Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Cursornamen Bestimmen (https://www.delphipraxis.net/139669-cursornamen-bestimmen.html)

stiftII 2. Sep 2009 17:55


Cursornamen Bestimmen
 
Hi.
Wirklich ein Super Forum hier :D. Bevor ich mich angemeldet hab hat mich google mit meinen Fragen schon oft hierher geführt.

Zu meinem jetzigen Problemchen hab ich allerdings noch keine passende Lösung gefunden :(.

Ich versuche den Cursornamen des momentan aktiven Cursors(Global) zu bestimmen. Dafür hab ich mir erstmal das Handle vom Cursor geholt mit:
ico.Handle := GetCursor;

Jedoch komme ich über das handle nicht an den cursornamen ? Oder doch ?. Wie könnte ich sonst an den namen kommen ?.

-stiftII

himitsu 2. Sep 2009 18:26

Re: Cursornamen Bestimmen
 
Du kannst Screen.Cursors (Screen aus Unit Forms) durchgehn und schauen, ob von Einem das Handle mit deinem übereinstimmt.
Der Index (wenn gefungen) würde dann dem "Namen" entsprechen.

Name = KonstantenName (von z.B. crHelp) ... also brauchst du dann noch 'ne Tabelle mit den bekannten "Namen" und ihrem Wert/Index, in welcher du dann schaus, ob der Index/Wert dort enthalten ist;

BAMatze 2. Sep 2009 18:28

Re: Cursornamen Bestimmen
 
Nimm mal:

Delphi-Quellcode:
Form1.caption := cursortostring(screen.Cursor);
bekommst direkt den Cursornamen. Die Form1.Caption war nur, weil ich das getestet hab und schnell irgendein String zur Ausgabe braucht. Kannst natürlich alles nehmen, was du willst

MfG
BAMatze

stiftII 2. Sep 2009 18:38

Re: Cursornamen Bestimmen
 
Hallo.
Danke für die Antworten.

Es funktioniert leider nicht. "cursortostring(screen.Cursor);" gibt immer dasselbe zurück(crDefault), selbst wenn sich der Cursor ändert.

Grüße,
stiftII

BAMatze 2. Sep 2009 18:41

Re: Cursornamen Bestimmen
 
Das gilt natürlich nur für dein eigenen Thread (deine Form). Wenn du andere außerhalb deiner Form identifizieren willst, musst du schon vorher (denke ich mal) nen globalen Maushook machen.

BAMatze

stiftII 2. Sep 2009 18:55

Re: Cursornamen Bestimmen
 
Ich müsste den global bestimmen, also nicht nur in meiner Form, deswegen auch Windows API :).

~stift II

DeddyH 2. Sep 2009 19:01

Re: Cursornamen Bestimmen
 
Schau mal nach MSDN-Library durchsuchenGetCursorInfo.

stiftII 2. Sep 2009 19:19

Re: Cursornamen Bestimmen
 
Zitat:

CURSORINFO Structure

The CURSORINFO structure contains global cursor information.

Syntax

typedef struct {
DWORD cbSize;
DWORD flags;
HCURSOR hCursor;
POINT ptScreenPos;
} CURSORINFO, *PCURSORINFO, *LPCURSORINFO;

Members

cbSize
Specifies the size, in bytes, of the structure. The caller must set this to sizeof(CURSORINFO).
flags
Specifies the cursor state. This parameter can be one of the following values.

0
The cursor is hidden.
CURSOR_SHOWING
The cursor is showing.

hCursor
Handle to the cursor.
ptScreenPos
A POINT structure that receives the screen coordinates of the cursor.
Es gibt leider nicht den namen zurück, nur die Position, das Handle und die Sichtbarkeit. :(

DeddyH 2. Sep 2009 19:22

Re: Cursornamen Bestimmen
 
Zitat:

Zitat von himitsu
Du kannst Screen.Cursors (Screen aus Unit Forms) durchgehn und schauen, ob von Einem das Handle mit deinem übereinstimmt.
Der Index (wenn gefungen) würde dann dem "Namen" entsprechen.


BAMatze 2. Sep 2009 19:24

Re: Cursornamen Bestimmen
 
nunja dann bleibt dir aber die Möglichkeit wie himitsu vorgeschlagen hat, das gefundenen Handle mit den vorhandenen zu vergleichen.

Mist zu langsam


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz