मैं एक कंसोल एप्लिकेशन बना रहा हूं जिसमें मैं प्रमुख प्रेस (जैसे यूपी तीर) रिकॉर्ड करना चाहता हूं। मैंने लो लेवल कीबोर्ड हुक बनाया है जो किसी भी थ्रेड में सभी कुंजी प्रेस को कैप्चर करना और मेरे कॉलबैक फ़ंक्शन को आवेदना देना है, लेकिन यह काम नहीं कर रहा है। जब मैं एक कुंजी दबाता हूं, तो प्रोग्राम थोड़ी देर के लिए स्टाल करता है, लेकिन कॉलबैक को कभी भी आमंत्रित नहीं करता है। मैंने प्रलेखन की जांच की है लेकिन कुछ भी नहीं मिला है। मुझे नहीं पता कि मैं SetWindowsHookEx() गलत तरीके से उपयोग कर रहा हूं (मेरे ज्ञान के लिए यह सफलतापूर्वक हुक बनाता है) या मेरा कॉलबैक फ़ंक्शन गलत है! मुझे यकीन नहीं है कि क्या गलत है! मदद के लिए अग्रिम धन्यवाद।सी ++ 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 # 21272 9 2) एक समान प्रश्न के लिए, जिसका मैंने उत्तर दिया है कि आपकी मदद करेगा। – t0mm13b