IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

problème Hook clavier


Sujet :

C#

  1. #1
    Membre du Club Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Points : 59
    Points
    59
    Par défaut problème Hook clavier
    Bonjours à tous !

    Après de longue et pénibles recherche sur internet, j'ai enfin trouvé un code qui semble propre pour faire un hook clavier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    private const int WH_KEYBOARD_LL = 13;
            private const int WM_KEYDOWN = 0x0100;
            private static LowLevelKeyboardProc _proc = HookCallback;
            private static IntPtr _hookID = IntPtr.Zero;
     
     
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
     
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            [return: MarshalAs(UnmanagedType.Bool)]
            private static extern bool UnhookWindowsHookEx(IntPtr hhk);
     
            [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
     
            [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern IntPtr GetModuleHandle(string lpModuleName);
     
            private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
     
            private static IntPtr SetHook(LowLevelKeyboardProc proc)
            {
                using (Process curProcess = Process.GetCurrentProcess())
                using (ProcessModule curModule = curProcess.MainModule)
                {
                    return SetWindowsHookEx(WH_KEYBOARD_LL, proc, GetModuleHandle(curModule.ModuleName), 0);
                }
            }
     
            private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
            {
                if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
                {
                    int vkCode = Marshal.ReadInt32(lParam);
     
                    if ((Keys)vkCode == Keys.PrintScreen)
                    {
                    }
     
                    //Console.WriteLine((Keys)vkCode);
                }
                return CallNextHookEx(_hookID, nCode, wParam, lParam);
            }
     
     
     
            public Client()
            {
                InitializeComponent();
     
                _hookID = SetHook(_proc);
                UnhookWindowsHookEx(_hookID);
            }

    Autant vous dire que a part les importations, je n'y comprend pas grand chose. Cependant, le code ne présente pas d'erreur mais ne semble pas non plus fonctionner.

    A vrai dire, je ne sais pas ou je peux récupérer la touche pressée !

    j'ai essayé à la ligne avec le commentaire //Console.WriteLine((Keys)vkCode); mais je n'ai rien.

    Le problème c'est que le code source est fait pour une application console , donc le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _hookID = SetHook(_proc);
                UnhookWindowsHookEx(_hookID);
    que j'ai placé dans public Client était dans Main dans le code source. cependant, étant donné que je suis dans une winform, je n'ai pas de Main (a part dans programm.cs) mais du coup il ne reconnait pas puisque le reste (importations, procédure...) est dans la class Form1.

    bref, je suis un peu perdu...

    Merci de votre aide !

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je ne sais pas si l'on doit t'aider, tu va surement faire un keylogger.
    De plus tu ne semble pas avoir de notion de la POO, ne vaudrait il mieux pas commencer par les bases ?

  3. #3
    Membre du Club Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Points : 59
    Points
    59
    Par défaut
    Bonjour, merci de votre réponse.

    Oui, c'est pour faire un keylogger, mais ne qui ne concernera que mon ordinateur.

    De plus, je fais de la POO depuis longtemps, j'ai largement dépassé les bases. C'est juste que je viens tout juste de passer à C#.

    Merci

Discussions similaires

  1. Problème avec un hook clavier
    Par Definol dans le forum Windows
    Réponses: 0
    Dernier message: 02/02/2010, 15h12
  2. Réponses: 1
    Dernier message: 02/09/2009, 14h37
  3. [Hook] Clavier Microsoft office keyboard
    Par merzhin dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 01/06/2004, 13h59
  4. problème de clavier en turbo pascal
    Par foliies dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 05/10/2003, 21h46
  5. Problème évènements clavier
    Par julie20 dans le forum Langage
    Réponses: 3
    Dernier message: 24/09/2003, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo