begin process at 2010 02 10 00:41:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Périphérique

 > 

Traduire des touches


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Traduire des touches

samedi 31 mars 2007 à 23:04:35 | Traduire des touches

iow4

Membre Club
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 )

Merci pour votre aide.
dimanche 1 avril 2007 à 02:34:05 | Re : Traduire des touches

Lutinore

Administrateur CodeS-SourceS

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;
        }
    }
   
    return CallNextHookEx( hHook, code, wParam, lParam );
}

Pour SendInput, tu as un exemple ici :

http://www.csharpfr.com/infomsg_NUM-PAD-VIRTUEL-SENDINPUT_905039.aspx

dimanche 1 avril 2007 à 15:34:48 | Re : Traduire des touches

iow4

Membre Club
Salut,

Merci pour ta réponse, j'ai essayé d'adapter des codes sur Internet pour mettre en place un Hook mais sans succés.
Pourrais-tu m'aider stp

Merci encore.
dimanche 1 avril 2007 à 16:43:17 | Re : Traduire des touches

Lutinore

Administrateur CodeS-SourceS
Tu as un exemple ici :

http://www.csharpfr.com/infomsg_EVENEMENT-IMPORTE-OU-SUR-ECRAN_745061.aspx

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.
dimanche 1 avril 2007 à 18:09:03 | Re : Traduire des touches

iow4

Membre Club
Ok c'est fait mais à la compilation j'ai une erreur pour les 4  constantes dans le switch, exemple :


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


J'ai cherché sur msdn, il n'est donné null part l'entier que designe ces constantes...

Merci
dimanche 1 avril 2007 à 18:26:40 | Re : Traduire des touches

iow4

Membre Club
c'est bon ça marche ! j'ai trouvé les constantes !


        private const int WM_LBUTTONDOWN = 0x0201;
        private const int WM_RBUTTONDOWN = 0x0204;
        private const int WM_MBUTTONDOWN = 0x0207;
        private const int WM_XBUTTONDOWN = 0x020B;



Lutinor t'es trop fort ! Longue vie à toi
dimanche 1 avril 2007 à 18:44:45 | Re : Traduire des touches

Lutinore

Administrateur CodeS-SourceS
Merci... je suis content que ça marche j'avais pas de souris avec 5 boutons pour tester.
dimanche 1 avril 2007 à 19:53:53 | Re : Traduire des touches

iow4

Membre Club
Je soigne un peu la source et le programme et je poste sur ce site.
mercredi 2 juillet 2008 à 13:46:18 | Re : Traduire des touches

killsnip

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?

merci
mercredi 2 juillet 2008 à 13:49:21 | Re : Traduire des touches

iow4

Membre Club
Si je me rappel bien (ça date maintenant) J'ai remplacé le 3éme bouton de la souris (appuie sur la molette) par la touche R

Thomas,
http://iow4.net


Cette discussion est classée dans : boutons, dll, touches, traduire, user32


Répondre à ce message

Sujets en rapport avec ce message

c#, touche du clavier [ par stiley1 ] salut , j'ai 3 boutons (btn1, btn2, btn3)je voudrais associer tes touches du claviers à ces boutons(touches raccourcies)echap=btns, entree=btns et z=b API user32.dll [ par spectresombre ] Salut,J'ai un soucis je n'arrive pas à récupérer le texte dans une richtextbox d'un autre programme (AOL en l'occurence)je donne le passage de mon sou Récuper les touches shift et ctrl dans un évènement [ par thiosyiasar ] Bonjour,Je voudrais savoir comment récupérer dans l'évenement suivant si les touches Maj ou Ctrl sont enfoncéesvoid TreeView_DoubleClick(object sender Prb avec DLL [ par pirate75000 ] C'est la premiere fois que je travail en C#Merci de votre aideJe dois appeller une fonction d'une Dll en c++ c'est ecrit de la maniere suivante:La str utilisation de DLL développée en C [ par regdobey ] Bonjour,j'ai du mal à utiliser une DLL (win32).Le prototype de la fonction que j'appelle est : int** allocation(int** r, int colonne, int ligne)En appeller des dll à l'execution en C# [ par ppao ] Comment utiliser les fonctions d'une dll ( en C#) qui n'était pas forcement présente lors de la compilation du programme.En gros, comment marche un pl Creer et enregistrer une dll .net pour l'utiliser en ASP [ par Kev33 ] Bonjour,J'essai de creer une dll en .net et de l'enregistrer avec la commande "regsvr32 madll.dll"mais j'ai une erreur : "madll.dll a été chargé mais [C#] heritage [ par zebulix131 ] bonsoir a touspourriez vous m'indiquer ou puis je trouver un exemple simple d'une fenetre qui herite d'une autre . Exemple l'image principale avec 2 b Toolbar et image ... [ par Thanos_the_yopper ] j'ai fais une ToolBar avec des boutons dedans, et j'ai mis une image sur chacun des boutons, mais y'a une bordure autour de l'image, du coup, mes bout webservice et dll [ par fryounet ] bonjour à tous je suis nouveau et je cherche des infos sur les webservice et accés de dll..en code managé et non managé...,j'aurai besoin d'exemples e


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales