keybd_event对“输入法”无效?

zonedearbaby 2014-08-18 01:26:17
做远程,受控端用keybd_event/sendinput,测试后发现:
1:对输入法无效。受控端输入法在焦点窗口切到中文后输入的还是英文(但是大小写还是可以正常相应的)。
2:模拟特殊按键组合,比如Shift+Ctrl
keybd_event(VK_CONTROL ,0,0,0);
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
在2台电脑上测试还算和预期符合,但是在一台电脑上测试的话会有消息的残留:比如说Shift或者Ctrl一直是被按下的状态(其他的组合键会有比如说ATL和Win残留),导致在一台电脑上测试的时候测完后会很恶心,按E直接资源管理器,滚轮直接放大缩小,文本编辑器里面光标是粗的,退格不了,等等。不知道是什么情况,这函数也没返回值不好判断调用结果,怀疑是不是在一台电脑上测试的话这些模拟消息会被本地实际产生的消息给打乱掉或者遗失。前辈们感兴趣的话帮忙分析分析?
3:输入法是不是用hook做的,hook能抓到这种方法模拟出来的消息吗?(待测)
...全文
347 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zonedearbaby 2014-08-25
  • 打赏
  • 举报
回复 1
经过多次改写、测试,最终搞定了,关键在于有哦没有指定KEYEVENTF_EXTENDEDKEY位,如果有就不行,去掉正常。希望此贴对他人有帮助。结贴。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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