一个关于向其它窗口发键盘事件的问题

dd911501406 2011-10-22 12:14:00
我想向一个窗口发键盘事件
假如我在目标窗口上按'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()这个可以实现键盘事件,但是焦点必须在目标窗口上,我想实现的是焦点在别的窗口,目标窗口也能接收键盘事件,请各位高手们帮帮我想想办法吧
...全文
158 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dd911501406 2011-10-22
  • 打赏
  • 举报
回复
大牛们吃午饭去了吗?
dd911501406 2011-10-22
  • 打赏
  • 举报
回复
自己顶一下,求高手解答
yucf2002 2011-10-22
  • 打赏
  • 举报
回复
::PostMessage(hwnd,WM_KEYDOWN,'A',0);//hwnd为目标窗口句柄
::PostMessage(hwnd,WM_KEYUP,'A',0);//
dd911501406 2011-10-22
  • 打赏
  • 举报
回复
怎么没人回应呢?是我说的不清楚?还是问题太低级?

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧