如何通过WH_KEYBOARD_LL挂钩程序发送输入消息

时间:2010-02-02 04:47:54

标签: c++ windows winapi hook messaging

我正在尝试将重复的邮件发送到此代码中的编辑框窗口:

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”。

感谢阅读。

1 个答案:

答案 0 :(得分:0)

嗯,我并不感到惊讶,案例2不起作用。您正在发送KBDLLHOOKSTRUCT作为wParam。

我原以为。

 SendMessage( ghServerWnd, wParam, (WPARAM)lpk->vkCode, (LPARAM)lpk->scanCode );

会更好地工作(尽管我并非100%确信我的LPARAM已经完成)。