2016-10-10 9 views
0

こんにちは私はこのフックで助けが必要です私はフックについて学んでいます。私はマイクロソフトのsetwindowshookexについてもっと学ぶための簡単な例題をやっています。私はなど、入力し、Ctrlキーのようなさまざまなコントロールキーを含めるようにしようとしています まず最初に、私はこのコードを試してみました:setwindowhookexとフック

if(wParam == WM_SYSKEYDOWN){ 
      switch (wParam) 
         { 
          case VK_SHIFT: 

           qDebug() << "prueba"; 

           break; 

          default: 
           break; 
         } 
     } 

明らかdidntの仕事を。だから私は比較を行うことができますが、私はいくつかのコントロールのキーをチェックするための種類を含めることを好む。私は別のアプリケーションをノートパッドのように学習のために使用しているときに、別のものを含めることを試みています。

+0

'if(wParam == ...)と' switch(wParam) 'の内部では意味がありません。この時点ですでに 'wParam'の値を知っていれば、別の値を持つ' case'には決して到達できません。たぶん、あなたは2つの異なる変数をチェックするつもりでしたか?とにかくこれはどんな機能ですか?これはあなたの['KeyboardProc'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644984(v = vs.85).aspx)ですか? –

答えて

0

キーボードフック機能で修飾キーを確認する通常の方法は、GetKeyStateを使用しています。

LRESULT DLL_CALL KeyboardFunc (int nCode, WPARAM wParam, LPARAM lParam) 
{ 
    ... 

    if (nCode < 0) 
     return (CallNextHookEx (hKeyHook, nCode, wParam, lParam)); 

    if (nCode == HC_NOREMOVE) 
     return (CallNextHookEx (hKeyHook, nCode, wParam, lParam)); 

    switch (wParam) 
    { 
     case VK_F12 : 

     // Check for modifier keys: 

     if ((GetKeyState (VK_CONTROL) & iHiOrder) && // ctrl key 
      (GetKeyState (VK_SHIFT) & iHiOrder) && // shift key 
      (GetKeyState (VK_MENU) & iHiOrder)  // Alt key 
     { 
     } 

ここで、HiOrderは上位ビットが設定されたconst SHORT値です。

関連する問題