次のスニペットは、ユーザーがキーを入力したときにメッセージを表示するためのものです。アプリケーションに焦点が当てられていない場合でも。しかし、次のコードには問題があるようです。ウィンドウでフックチェーンに登録された関数を呼び出しません。問題はにあると思いHINSTANCE hInst
ます。ユーザーがキーをタップしたときにメッセージを表示できるようにするには、以下のコードをどのように変更すればよいですか。
// Global Variables
static HHOOK handleKeyboardHook = NULL;
HINSTANCE hInst = NULL;
void TestKeys_setWinHook // i call this function to activate the keyboard hook
(...) {
hInst = GetModuleHandle(NULL);
handleKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInst, 0); // LowLevelKeyboardProc should be put in the hook chain by the windows,but till now it doesn't do so.
printf("Inside function setWinHook !");
}
// the following function should be called when the user taps a key.
static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
printf("You pressed a key !\n");
return CallNextHookEx(handleKeyboardHook, nCode, wParam, lParam);
}
しかし、ウィンドウは関数を呼び出しませんLowLevelKeyboardProc
。理由はわかりませんが、問題はhInst
フック関数にあると確信しています。どのように初期化する必要がありますか?
今まで、私が見る出力はInside function setWinHook !