2017-10-15 2 views
0

J'ai essayé de créer une clé de souris globale avec SetWindowsHookEx() donc lorsque j'appuie sur le bouton droit de la souris, elle exécute du code. Mon problème est que lorsque la fonction callback est exécutée, elle me donne un nombre bizarre pour le bon bouton qui change à chaque fois que le code est exécuté.SetWindowsHookEx ne fonctionne pas correctement

private static IntPtr ButtonHookCallback(int nCode, IntPtr wParam, IntPtr lParam) 
    { 

     int button = Marshal.ReadInt32(lParam); 
     if (nCode >= 0 && wParam == (IntPtr)WM_RBUTTONDOWN) 
     { 
      if (button == 0x02) 
      { 
       _m.rtbLog.AppendText("Test"); 
      } 

     } 

     return CallNextHookEx(MainWindow._hookId, nCode, wParam, lParam); 
    } 

Quand je lis lParam cela me donne comme un nombre d'environ 600 et les changements à chaque fois que le code est exécuté, même si elle devrait être 0x2. Comment puis-je résoudre ce problème: P.

EDIT: Il fonctionne parfaitement quand je le fais avec les touches

+0

Selon le ([Documentation] https://msdn.microsoft.com/en-us/library /windows/desktop/ms644986(v=vs.85).aspx) 'lParam' contient un pointeur vers une structure' MSLLHOOKSTRUCT'. [Cette structure] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644970 (v = vs.85) .aspx) contient essentiellement les coordonnées x et y du curseur de la souris. Pourquoi devrait-il être '0x2'? – haindl

+0

Quel genre de crochet est-ce? Un crochet de clavier ou de souris? Comment l'installez-vous? –

Répondre