我正在尝试使用以下代码将重复的消息发送到编辑框窗口:
extern "C" HOOK_DLL_API LRESULT CALLBACK GetMsgHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
{
CallNextHookEx(gMsgHook, nCode, wParam, lParam);
}
KBDLLHOOKSTRUCT *lpk = (KBDLLHOOKSTRUCT*) lParam;
ghServerWnd; // ghServerWnd == Edit1. that defined..
if (wParam == WM_KEYDOWN)
{
// case1: this code working.. but, unicode(IME character) no sent;;
SendMessageW(ghServerWnd, WM_CHAR, (WPARAM)lpk->vkCode, 0);
// case2: this code - not working.. T_T
SendMessageW(ghServerWnd, wParam, lParam, 0);
}
return CallNextHookEx(gMsgHook, nCode, wParam, lParam);
}
我需要代码中标记为“ case2”的帮助。
谢谢阅读。
最佳答案
好吧,我并不惊讶案例2无法正常工作。您正在将KBDLLHOOKSTRUCT作为wParam发送。
我会想到的。
SendMessage( ghServerWnd, wParam, (WPARAM)lpk->vkCode, (LPARAM)lpk->scanCode );
会更好地工作(尽管我不是100%确信我的LPARAM是完整的)。
关于c++ - 如何通过WH_KEYBOARD_LL Hook 过程发送键入消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2181952/