一个关于向其它窗口发键盘事件的问题
我想向一个窗口发键盘事件
假如我在目标窗口上按'a'
则spy捕获到的消息如下:
<00158> 00030116 P WM_KEYDOWN nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000041 lParam:001E0001]
<00159> 00030116 P WM_CHAR nVirtKey:'97' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000061 lParam:001E0001]
<00160> 00030116 P WM_INPUT nInputCode:RIM_INPUT hRawInput:008508EB(这个地方每次我敲'a'都会不一样) [wParam:00000000 lParam:008508EB]
<00161> 00030116 P WM_KEYUP nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:1 fUp:1 [wParam:00000041 lParam:C01E0001]
但是我向那个窗口发送PostMessage()不会出现WM_INPUT那个消息,我的代码如下:(hWnd是已获得的目标窗口句柄,句柄没问题)
WPARAM wp = 0x00000041;
LPARAM lp = 0x001E0001;
::PostMessage(hwnd,WM_KEYDOWN,wp,lp);
Sleep(50);
lp = 0xC01E0001;
::PostMessage(hwnd,WM_KEYUP,wp,lp);
我这样发送,目标窗口不响应键盘事件,spy捕获的消息如下
<00001> 00030116 P WM_KEYDOWN nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000041 lParam:001E0001]
<00002> 00030116 P WM_CHAR nVirtKey:'97' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0 [wParam:00000061 lParam:001E0001]
<00003> 00030116 P WM_KEYUP nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:1 fUp:1 [wParam:00000041 lParam:C01E0001]
除了少了WM_INPUT以外其它事件都一样
请问如何能模拟WM_INPUT那个消息?WM_INPUT的lParam不知道是什么东西,又如何设置
如果用keybd_event()这个可以实现键盘事件,但是焦点必须在目标窗口上,我想实现的是焦点在别的窗口,目标窗口也能接收键盘事件,请各位高手们帮帮我想想办法吧