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

Résolu
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009 - 26 juin 2007 à 16:35
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 27 juin 2007 à 10:54
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

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
27 juin 2007 à 01: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
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
27 juin 2007 à 10:54
et maintenant la procédure DrawCursor
juste ici 
++
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
26 juin 2007 à 16:41
Euh...
Je vois vraiment mal comment tu comptes faire cette "comparaison" là...
Explique donc...
0
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
26 juin 2007 à 16:45
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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
26 juin 2007 à 18:52
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.
0
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
26 juin 2007 à 19:43
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
0
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
27 juin 2007 à 09:41
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
0