我正在尝试使用以下代码将重复的消息发送到编辑框窗口:

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/

10-11 22:46