Récupérer l'image du curseur de la souris

Résolu
Signaler
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour à tous!

J'aimerais savoir si quelqu'un connait une API permettant de récupérer la forme (l'image) du curseur de la souris pour pouvoir la comparer à l'image d'une picturebox par exemple. J'ai trouvé GetCursor mais je pense pas que ce soit ça (http://allapi.mentalis.org/apilist/GetCursor.shtml).

Merci d'avance

VBGenesis

7 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut

tien c'est cadeau

Option Explicit
'
Private Const OCR_CROSS         As Long = 32515 '"Crosshair" - Croix (en forme de +).
Private Const OCR_IBEAM         As Long = 32513 '"IBeam" - Curseur de saisie (en forme de I).
Private Const OCR_APPSTARTING   As Long = 32650 '"AppStarting" - Flèche + Sablier.
Private Const OCR_NO            As Long = 32648 '"No" - Symbôle interdiction.
Private Const OCR_NORMAL        As Long = 32512 '"Arrow" - Curseur par défaut (flèche).
Private Const OCR_SIZE          As Long = 32640 '"Size" - Flèche en croix (en forme de X). <--
W95
Private Const OCR_SIZEALL       As Long = 32646 '"SizeAll" - Flèche en croix (en forme de X).
Private Const OCR_SIZENESW      As Long = 32643 '"SizeNESW" - Flèche Nord,Est-Sud,Ouest.
Private Const OCR_SIZENS        As Long = 32645 '"SizeNS" - Flèche Nord-Sud.
Private Const OCR_SIZENWSE      As Long = 32642 '"SizeNWSE" - Flèche Nord,Ouest-Sud,Est.
Private Const OCR_SIZEWE        As Long = 32644 '"SizeWE" - Flèche Ouest-Est.
Private Const OCR_UP            As Long = 32516 '"UpArrow" - Flèche pointant vers le haut.
Private Const OCR_WAIT          As Long = 32514 '"Wait" - Sablier.
'
'-> dessine icone ou curseur sur un support avec
hDC
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As
Long, ByVal hIcon As Long) As Long
'
'-> charge un curseur en état
spécifié, lié à une instance (genre exe, res, ou windows)
Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As
Long
'
'-> créé
un curseur basé sur un fichier spécifié
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
'
'-> détruit un objet graphique, ses ressources, et rend
invalide son Handle
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
'
'
Private Sub Form_Load()
    Me.Width = 2805
    Me.Height = 4245
End Sub
'
'
Private Sub Form_Paint()
    Dim Cursor As Long

    Cursor = LoadCursor(ByVal 0&, OCR_CROSS): Call DrawIcon(Me.hdc, 10, 120, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_IBEAM): Call DrawIcon(Me.hdc, 50, 120, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_APPSTARTING): Call DrawIcon(Me.hdc, 90, 120, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_NO): Call DrawIcon(Me.hdc, 130, 120, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_NORMAL): Call DrawIcon(Me.hdc, 10, 160, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_SIZEALL): Call DrawIcon(Me.hdc, 50, 160, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_SIZENESW): Call DrawIcon(Me.hdc, 90, 160, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_SIZENS): Call DrawIcon(Me.hdc, 130, 160, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_SIZENWSE): Call DrawIcon(Me.hdc, 10, 200, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_SIZEWE): Call DrawIcon(Me.hdc, 50, 200, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_UP): Call DrawIcon(Me.hdc, 90, 200, Cursor)
    Cursor = LoadCursor(ByVal 0&, OCR_WAIT): Call DrawIcon(Me.hdc, 130, 200,
Cursor)
    
    Call DeleteObject(Cursor)
End Sub

++
PCPT  [AFCK]
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
et maintenant la procédure DrawCursor
juste ici 
++
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Euh...
Je vois vraiment mal comment tu comptes faire cette "comparaison" là...
Explique donc...
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009

Je pensais comparer quelques pixels sur les deux images pour déterminer si l'image récupérée est par exemple celle de la picturebox 1 ou de la 2
Merci de ta réponse rapide!
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Tu t'embarques mal, là...
Les curseurs (dont la grande majorité sont en noir/gris sur un fond d'une couleur rendue transparente) ne sauraient être valablement comparés avec leur image dans une picturebox (image qui, elle, n'aurait pas la transparence) à l'aide de quelques pixels, en admettant même que tu puisses en copier l'image....
Q>uelle est donc l'idée derrière cette recherche ? Si tu nous exposais clairement ce dont il s'agit, on pourrait peut-être trouver un moyen d'arriver à la concrétiser sans passer par cette manoeuvre étrange de comparaison d'images.
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009

OK, je m'explique:
J'ai une appli (pas le source, une appli lancée) avec laquelle je dois fonctionner, mais elle n'est pas prévue pour. Donc, pour récupérer l'evenement qui m'interresse, je surveille le curseur, car il change au moment de cet evenement., Pour comparer, je regarde un pixel qui est particulier dans chaque image. Par exemple: admettons que le curseur "main" a le pixel [3;1] en noir, mais pas le curseur "souris". Je regarde si le pixel [3;1] du curseur que j'ai récupéré est noir, si oui, c'est une "main", et sinon c'est une "souris". Est-ce possible de faire ainsi
Sinon j'ai trouvé pour récupérer le curseur avec une combinaison des API GetCurseur et DrawIcon:

Private Declare Function GetCursor Lib "user32" () As Long
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
DrawIcon Me.hdc, 0, 0, GetCursor

Je vais continuer sur cette voie là, voir si je peut en tirer quelquechose

Merci de ton aide

VBGenesis
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009

Super merci beaucoup!
C'est sur ce principe que marche aussi la récupération du curseur.
Maintenant il ne me reste plus qu'à comparer!
Encore merci
VBGenesis