Hook clavier [Résolu]

cs_Mr.X 119 Messages postés mercredi 22 octobre 2003Date d'inscription 2 novembre 2007 Dernière intervention - 1 sept. 2007 à 21:21 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 2 sept. 2007 à 09:49
Bonjours.
J'ai essayer de réaliser un programme pour faire un hook du clavier plus particulièrement de la combinaison "Control+C". J'ai essayer ce code :

        private void MyKeyPress(object sender, KeyPressEventArgs e)
        {            if (((Control.ModifierKeys & Keys.Control) Keys.Control) && (e.KeyChar (char)Keys.C))
            {
                // ....
            }
        }

Cependant cela ne fonctionne pas. Si je remplace Keys.Control par Keys.Shift, l'utilisation du code se fait sans problème. Ma question est : Est-il possible de récupéré la combinaison de touche "Control+C" ?
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 2 sept. 2007 à 02:08
3
Merci
Telle qu'est posée ta question, ça laisse plus penser à un event KeyPress standard qu'à un hook :-)
Le lien que tu donnes concerne effectivement un hook, et la réponse à la non détection de Control figure peut être dans la section FAQ de l'article.

/*
coq
MVP Visual C#
CoqBlog
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de cs_coq
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 1 sept. 2007 à 23:57
0
Merci
Salut, ce n'est pas vraimment ce qu'on appelle un hook.. et certains contrôles peuvent interprétés la combinaisons Ctrl+C.

protected override void OnKeyDown( KeyEventArgs e )
{
    //base.OnKeyDown( e );


    if ( e.KeyCode Keys.C && e.Modifiers Keys.Control )
        MessageBox.Show( "Ctrl+C" );
}
Commenter la réponse de Lutinore
cs_Mr.X 119 Messages postés mercredi 22 octobre 2003Date d'inscription 2 novembre 2007 Dernière intervention - 2 sept. 2007 à 01:23
0
Merci
Ce que j'utilise est bien un hook c'est certain. Je doit récupéré les touches du clavier sans focus sur mon appli c'est donc bien la méthode à utiliser.

J'ai remplacer la méthode par :
       private void MyKeyDown(object sender, KeyEventArgs e)
        {            if (e.KeyCode Keys.C && e.Modifiers Keys.Control)
            {
                // ...
            }
        }

Mais le resultat est le même.
Commenter la réponse de cs_Mr.X
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 2 sept. 2007 à 01:30
0
Merci
Salut,

Aucune des méthodes citées ici ne repose sur des hook.
D'ailleurs pour ce que tu veux faire tu n'as peut être pas besoin de passer par un hook, jette un oeil à la source de seb : http://www.csharpfr.com/codes/CREEZ-VOS-PROPRES-RACCOURCIS-CLAVIER-NIVEAU-SYSTEME_33196.aspx

Dans le cas contraire il faudrat probablement regarder du côté de WH_KEYBOARD_LL.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
cs_Mr.X 119 Messages postés mercredi 22 octobre 2003Date d'inscription 2 novembre 2007 Dernière intervention - 2 sept. 2007 à 01:46
0
Merci
Je me suis basé sur ce code http://www.codeproject.com/csharp/globalhook.asp
donc si sa n'est pas un hook ...
Commenter la réponse de cs_Mr.X
cs_Mr.X 119 Messages postés mercredi 22 octobre 2003Date d'inscription 2 novembre 2007 Dernière intervention - 2 sept. 2007 à 01:47
0
Merci
En tout cas merci pour ce lien [auteurdetail.aspx?ID=10023 coq]. Je vais me pencher dessus.
Commenter la réponse de cs_Mr.X
cs_Mr.X 119 Messages postés mercredi 22 octobre 2003Date d'inscription 2 novembre 2007 Dernière intervention - 2 sept. 2007 à 02:29
0
Merci
Je débute en C# (enfait c'est mon premier code) et je ne savais pas que les fonctions que javais montré pouvais être lié à autre chose qu'un hook clavier (même si javais pu m'en douter).
Une chose est sur, j'ai appris un truck aujourd'hui : Toujours lire les faq jusqu'au BOUT. Même si c'est en anglais.

Merci coq.
Commenter la réponse de cs_Mr.X
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 2 sept. 2007 à 08:19
0
Merci
Tiens Coq à 2h du mat.
Commenter la réponse de Lutinore
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 2 sept. 2007 à 09:49
0
Merci
Voui, mais ça fait mal le lendemain :p

Les events "standards" du genre KeyPress etc sont en général levés lors du traitement des messages Windows par la méthode WndProc (équivalent de WindowProc) du contrôle. Mais elle ne traite que les messages qu'elle recoit, et qui lui sont donc destiné (ou que la "fenêtre" à demander à recevoir, via des choses comme RegisterHotkey par exemple).
Enfin, si tu as fait de la prog Win32 en C/C++ tu dois mieux maitriser ce sujet que moi.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.