2017-10-15 11 views
0

SetWindowsHookEx()でグローバルmousehotkeyを作成しようとしましたので、マウスの右ボタンを押すとコードが実行されます。私の問題は、コールバック関数が実行されると、コードが実行されるたびに変更され続ける右ボタンのために私に奇妙な番号が与えられることです。SetWindowsHookExが正しく動作しません

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); 
    } 

私はlParamにを読んだとき、それは毎回コードは、それは0x2のあるべきにもかかわらず実行されます600および変更の周りの数のように私を与えます。 これを修正するにはどうすればよいですか?

EDIT:それは私がキー

+0

/windows/desktop/ms644986(v=vs.85).aspx) 'lParam'は' MSLLHOOKSTRUCT'構造体へのポインタを含んでいます。 [この構造体](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644970(v = vs.85).aspx)には、基本的にマウスカーソルのx座標とy座標が含まれています。なぜそれが '0x2'であるべきですか? – haindl

+0

これはどのようなフックですか?キーボードやマウスのフックですか?どのようにそれをインストールしていますか? –

答えて

0

0x02でそれを行う際に完璧に動作wParamむしろlParamから来るべきWM_MOUSEMOVEを意味します。 lParamMOUSEHOOKSTRUCTを意味し、x- and y-coordinates of the cursorを含むように頻繁に変更されます。ちょうど[ドキュメント](https://msdn.microsoft.com/en-us/libraryによれば[MouseProc callback function][1]を参照し[MOUSEHOOKSTRUCT structure][2]

関連する問題