2012-05-11 15 views
1

おはようございます。私はグローバルなマウスフックを書いています。フックが最初のマウスイベントに対してのみ呼び出される点を除いて、すべてうまく動作しているようです。 いくつかのコード:Windowsフックは一度だけ呼び出されます

// Dll defined function 
    extern "C" Q_DECL_EXPORT LRESULT MouseProc(int code, WPARAM wParam, LPARAM lParam) 
    { 
     qDebug() << "MouseProc"; 
     return TRUE; 
    } 

// Application code 
    ... 
     hLib = LoadLibrary(TEXT("ServerHook.dll")); 
     HOOKPROC hookAddr = (HOOKPROC)GetProcAddress(hLib, "MouseProc"); 
     if (!hookAddr) { 
      qDebug() << "Invalid hook proc " << GetLastError(); 
     } 
     if ((WinInputHook::hookHandle = SetWindowsHookEx(
        WH_MOUSE, hookAddr, hLib, 0)) 
        == NULL) { 
      qDebug() << "Invalid hook handle " << GetLastError(); 
     } 
    ... 

答えて

1

(WH_KEYBOARD)をインストールフックyou'r "installs a hook procedure that monitors keystroke messages" and not the mouse

+0

確かに、あなたは正しいです。それと同時に、それはそうではありません。なぜなら、主要な出来事のためには、それは1回だけであるからです。 – OneMoreVladimir

+0

DLLがシステムから解放されないように注意してください。 – mox

+0

どうすればそれを達成できますか? DllCanUnloadNow? – OneMoreVladimir

関連する問題