2011-08-22 124 views
1

我學習的窗戶掛鉤,和我寫了這個代碼:鍵盤鉤子問題

DLL:

extern "C" __declspec(dllexport) LRESULT CALLBACK CBTFrenk(int nCode, WPARAM wParam, LPARAM lParam){ 
    FILE *fp = fopen ("F:\\log.txt", "a"); 
    fprintf(fp, "CALLED!"); 
    fclose(fp); 
     return CallNextHookEx(NULL, nCode, wParam, lParam);  } 

應用:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    char fine; 
    HINSTANCE hdll = LoadLibrary((LPCTSTR) L"F:\\Progetti\\CBT_Hook\\Debug\\DllForHook.dll"); 
    wprintf(L"%d\n", GetLastError()); 
    HOOKPROC pfunc = (HOOKPROC)GetProcAddress(hdll, "[email protected]"); 
    wprintf(L"%d\n", GetLastError()); 
    HHOOK handleToAHook = SetWindowsHookEx(WH_KEYBOARD, pfunc, hdll, 0); 
    wprintf(L"%d\n", GetLastError()); 
    scanf("%d", &fine); 

    return 0; 
} 

DLL和鉤子程序被加載,而不錯誤,但是當我按下鍵盤的按鍵時,該功能什麼也不做。爲什麼?如果我用WH_CBT改變WH_KEYBOARD,這是工作......是什麼原因? WH_KEYBOARD和WH_KEYBOARD_LL有什麼區別?

感謝您的合作。

回答

0

LowlevelKeyboardProc在所調用的方法的上下文中進行的,所以該方法需要一個消息循環中MSDN庫寫入。