키 위쪽 (예 : 위쪽 화살표)을 녹음하고 싶은 콘솔 응용 프로그램을 만들고 있습니다. 모든 스레드에서 모든 키 누르기를 캡처하고 콜백 함수를 호출해야하는 로우 레벨 키보드 후크를 만들었지 만 작동하지 않습니다. 이 프로그램은 키를 눌렀을 때 약간 멈추지 만 결코 콜백을 호출하지 않습니다. 나는 문서를 확인했지만 아무것도 발견하지 못했습니다. SetWindowsHookEx()를 잘못 사용하고 있는지 (내 지식에 따라 후크가 성공적으로 만들어 짐) 콜백 함수가 올바르지 않습니다. 나는 틀린 것이 확실하지 않다! 도움에 미리 감사드립니다. 당신은 콜합니다 (getchar가)에 차단할 수C++ SetWindowsHookEx WH_KEYBOARD_LL 수정 설정
#include "Windows.h"
#include <iostream>
using namespace std;
HHOOK hookHandle;
LRESULT CALLBACK keyHandler(int nCode, WPARAM wParam, LPARAM lParam);
int _tmain(int argc, _TCHAR* argv[]) {
hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, keyHandler, NULL, 0);
if(hookHandle == NULL) {
cout << "ERROR CREATING HOOK: ";
cout << GetLastError() << endl;
getchar();
return 0;
}
MSG message;
while(GetMessage(&message, NULL, 0, 0) != 0) {
TranslateMessage(&message);
DispatchMessage(&message);
}
cout << "Press any key to quit...";
getchar();
UnhookWindowsHookEx(hookHandle);
return 0;
}
LRESULT CALLBACK keyHandler(int nCode, WPARAM wParam, LPARAM lParam) {
cout << "Hello!" << endl;
// Checks whether params contain action about keystroke
if(nCode == HC_ACTION) {
cout << ((KBDLLHOOKSTRUCT *) lParam)->vkCode << endl;
}
return CallNextHookEx(hookHandle, nCode,
wParam, lParam);
}
([여기]를 참조하시기 바랍니다 http://stackoverflow.com/questions/2127112/global-keyboard-hook-not-working/2127292 # 2127292) 나는 당신에게 도움이 될 답변을했던 비슷한 질문을했습니다. – t0mm13b