iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 2008
-
31 mars 2007 à 23:04
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 2008
-
2 juil. 2008 à 13:49
Bonjour,
J'ai une souris avec 5 boutons ( 2 sur le cotés, la mollete et les deux habituels ) seulement dans mon jeux favoris les deux boutons du coté sont pas reconnue alors je me demandais comment :
- Intercepter les cliques de ces deux boutons
- Envoyer un message au systeme pour lui dire que la touche A a été pressé par Exemple.
Pour le premier point, je sais qu'il faut faire un hook, mais quel est le code hexa pour choper un appuie sur un des deux boutons spécial ?
Pour le deuxieme point, je peux utiliser la méthode SendInput de user32.dll ou encore une methode managée SendKeys couplé à la methode non managé ForegroundWindows de user32.dll ( je dit tout ça de tête )
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 1 avril 2007 à 02:34
Salut, un hook, RawInput ou DirectInput..
Si tu fais un LowLevelHook, les boutons 4 et 5 sont nommés X1 et X2. Dans la méthode callback le paramètre wParam doit contenir le message WM_XBUTTONDOWN et la paramètre lParam contient une structure MSLLHOOKSTRUCT avec le champ mouseData qui indique si il s'agit du bouton X1 ou X2;
Ca donne quelque chose comme ça : ( pas testé, car j ai pas de souris avec 5 boutons )
private unsafe IntPtr LowLevelMouseProc( int code, UIntPtr wParam, IntPtr lParam )
{
if ( code == HC_ACTION )
{
switch ( ( int )wParam )
{
case WM_LBUTTONDOWN :
this.Text = "LEFT BUTTON";
break;
case WM_RBUTTONDOWN :
this.Text = "RIGHT BUTTON";
break;
case WM_MBUTTONDOWN :
this.Text = "MIDDLE BUTTON";
break;
case WM_XBUTTONDOWN : // X1 ou X2
MSLLHOOKSTRUCT* p = ( MSLLHOOKSTRUCT* )lParam;
this.Text = "X" + ( ( short )( p->Data >> 16 ) ) + " BUTTON";
break;
}
}
Suffit juste de remplace la méthode LowLevelMouseProc par celle du message précédent. Attenton ce hook ne marche pas en mode DEBUG, j'pense que ça vient du fait que je le crée dans la forme.
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 20084 1 avril 2007 à 18:09
Ok c'est fait mais à la compilation j'ai une erreur pour les 4 constantes dans le switch, exemple :
<hr size="2" width="100%" />Erreur 1 Le nom 'WM_LBUTTONDOWN' n'existe pas dans le contexte actuel C:\Documents and Settings\Thomas\Mes documents\Visual Studio 2005\Projects\TradTouch\TradTouch\Form1.cs 84 26 TradTouch
<hr size="2" width="100%" />
J'ai cherché sur msdn, il n'est donné null part l'entier que designe ces constantes...
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
killsnip
Messages postés1Date d'inscriptionmardi 1 juillet 2008StatutMembreDernière intervention 2 juillet 2008 2 juil. 2008 à 13:46
Bonjour,
voila moi aussi je joue à un fps et j'ai besoin des 5 boutons de la souris.Je voulais savoir comment,après avoir télécharger le zip que tu a mis en ligne (merci a toi iow4) utiliser le hook.Faut-il un logiciel particulier?