2010-06-24 9 views
3

Je sais comment stimuler les clics en utilisant la méthode User32 SendInput et ce dont j'ai besoin est une méthode User32 similaire mais pour obtenir l'état actuel du bouton de la souris.Comment vérifier l'état actuel du bouton de la souris à l'aide de la bibliothèque Win32/User32?

Quelque chose de similaire à:

public static extern bool GetCursorPos(ref System.Drawing.Point lpPoint);

Fonction GetCursorPos me donne la position du curseur. Ce dont j'ai besoin, c'est l'état du bouton gauche (s'il est cliqué ou non). Y a-t-il une telle fonction?

+0

duplication possible de [Vérifier si le LButton de la souris est en panne?] (Http://stackoverflow.com/questions/1275894/check-if-mouse-lbutton-is-down) – ST3

Répondre

3

Il existe une méthode appelée GetAsyncKeyState. La signature de la méthode ressemble à ceci:

[DllImport("user32.dll")] public static extern short GetAsyncKeyState(UInt16 virtualKeyCode);

Ensuite, vous appelez simplement passer le code de la clé de gauche de la souris (VK_LBUTTON = 0x01) et vous partez.

Plus d'informations directement à partir de MSDN.

+2

"Alors vous l'appelez simplement en passant à gauche le code de la souris (VK_LBUTTON = 0x01) et c'est parti. " Ceci est vraiment trompeur. Vous devez rompre et analyser le court retour pour créer les données d'état. Cela laisse la réponse à cette question quelque peu incomplète. –

3

Utilisez GetAsyncKeyState, CITER MSDN:

La fonction GetAsyncKeyState fonctionne avec des boutons de la souris. Cependant, il vérifie sur l'état des boutons de la souris physique , et non sur les boutons de la souris logique auxquels les boutons physiques sont . Par exemple, l'appel GetAsyncKeyState (VK_LBUTTON) toujours renvoie l'état du bouton de la souris physique gauche, indépendamment de si est mappé sur le bouton de la souris logique gauche ou droit. Vous pouvez déterminer le mappage actuel du système des boutons de la souris physiques aux boutons de la souris logiques en appelant GetSystemMetrics (SM_SWAPBUTTON).