c# – 创建屏幕键盘
我使用PostMessage来模拟后台程序中的击键.除了需要在物理键盘上移位的字符外,它工作正常.我如何模拟班次? “
我使用的代码大致是: VK vk = VkKeyScanEx (c,GetKeyboardLayout (0)); AttachThreadInput (_attachedThredId,_attachedProcessId,true); PostMessage (_window,WM_KEYDOWN,vk.key,0x1); PostMessage (_window,WM_KEYUP,0xC0010001); AttachThreadInput (_attachedThredId,false); 我该如何处理VK的扩展部分? 编辑 我正在尝试创建一个屏幕键盘.屏幕键盘上的每个按钮都模拟一系列击键.接收器是一个旧程序,根据执行的键盘顺序执行不同的任务. > {ESC} NN {ESC} NN 其中{ESC}模拟按下Esc键,NN是十六进制值,§/?让程序听. 通常我们有特殊的物理键盘来控制程序,但它们很昂贵.因此,在我们并不总是拥有物理键盘的测试环境中,我们必须手动输入这些代码 解决方法
你必须妥协:
如果你想模拟键盘输入,那么你必须使用SendInput,这意味着由哪个窗口当前具有焦点. SendInput就像击中物理键盘上的键一样.使用键盘将键击发送到特定窗口的唯一方法是ALT TAB到右侧窗口. 如果您想将击键发送到特定窗口,那么您会产生一种时髦的行为: >应用程序以不同的方式处简单的WM_KEYDOWN / WM_KEYUP消息不是检测键盘输入的唯一方法.例如,还有键盘状态(GetKeyboardState()),您将很难模拟.这很可能是您遇到的情况. 没有办法解决这些副作用;这是做阴暗的东西的结果. 针对您的目的的解决方案,因为您的目标是单个特定应用程序,可能是将PostMessage与SetKeyboardState结合使用来模拟键盘状态,包括换档位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |