gMsgHook = SetWindowsHookEx(WH_KEYBOARD_LL,GetMsgHookProc,ghInstDll,0);
.......
extern "C" HOOK_DLL_API LRESULT CALLBACK GetMsgHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0){
CallNextHookEx(gMsgHook, nCode, wParam, lParam);
}
KBDLLHOOKSTRUCT *dl = (KBDLLHOOKSTRUCT*)wParam;
if (nCode >= HC_ACTION){
// message mirror to hEdit1
// doesnt typing work
SendMessage(hEdit1, wParam, wParam, lParam);
}
return CallNextHookEx(gMsgHook, nCode, wParam, lParam);
}
答案 0 :(得分:0)
您的代码段中有很多错误。
首先,传递给钩子的KBDLLHOOKSTRUCT位于lParam中,而不是wParam。 wParam包含窗口消息。
其次,您将lParam原样传递给编辑控件。您需要构造适当的lParam(请参阅WM_KEYDOWN,WM_KEYUP等文档)。
第三,将wParam传递给钩子proc(这是消息)作为重新生成的键盘消息的wParam - 它应该是你从KBDLLHOOKSTRUCT获得的虚拟键码。
第四,如果nCode&lt; 0你最后两次调用CallNextHookEx。