首页 / C# / c# – 创建屏幕键盘
c# – 创建屏幕键盘
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 创建屏幕键盘,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1701字,纯文字阅读大概需要3分钟。
内容图文
![c# – 创建屏幕键盘](/upload/InfoBanner/zyjiaocheng/713/76d789a3c7f84857830674db0e9d71f6.jpg)
我使用PostMessage来模拟后台程序中的击键.除了需要在物理键盘上移位的字符外,它工作正常.我如何模拟班次? “
我使用的代码大致是:
VK vk = VkKeyScanEx (c, GetKeyboardLayout (0));
AttachThreadInput (_attachedThredId, _attachedProcessId, true);
PostMessage (_window, WM_KEYDOWN, vk.key, 0x1);
PostMessage (_window, WM_KEYUP, vk.key, 0xC0010001);
AttachThreadInput (_attachedThredId, _attachedProcessId, false);
我该如何处理VK的扩展部分?
编辑
我正在尝试创建一个屏幕键盘.屏幕键盘上的每个按钮都模拟一系列击键.接收器是一个旧程序,根据执行的键盘顺序执行不同的任务.
键盘序列如下
> {ESC} NN {ESC} NN
> {ESC} NN
>½NN
>§NN
其中{ESC}模拟按下Esc键,NN是十六进制值,§/½让程序听.
通常我们有特殊的物理键盘来控制程序,但它们很昂贵.因此,在我们并不总是拥有物理键盘的测试环境中,我们必须手动输入这些代码
解决方法:
你必须妥协:
如果你想模拟键盘输入,那么你必须使用SendInput,这意味着由哪个窗口当前具有焦点. SendInput就像击中物理键盘上的键一样.使用键盘将键击发送到特定窗口的唯一方法是ALT TAB到右侧窗口.
如果您想将击键发送到特定窗口,那么您会产生一种时髦的行为:
>应用程序以不同的方式处简单的WM_KEYDOWN / WM_KEYUP消息不是检测键盘输入的唯一方法.例如,还有键盘状态(GetKeyboardState()),您将很难模拟.这很可能是您遇到的情况.
>应用程序可能依赖于在接收键盘输入消息时具有焦点的标准行为.通过向这些应用程序发布消息,您可以调用可能导致崩溃的奇怪的无序行为.
>现在系统上的多个窗口可以同时接收键盘输入.这也可能导致奇怪的行为.
>(等等……)不会为这个输入调用Hooks,你的键盘/输入驱动程序不会看到它,它不会被DirectInput这样的东西识别……基本上它是一个永无止境的问题拼凑而成做一些坏熊的方式.
没有办法解决这些副作用;这是做阴暗的东西的结果.
针对您的目的的解决方案,因为您的目标是单个特定应用程序,可能是将PostMessage与SetKeyboardState结合使用来模拟键盘状态,包括换档位置.
内容总结
以上是互联网集市为您收集整理的c# – 创建屏幕键盘全部内容,希望文章能够帮你解决c# – 创建屏幕键盘所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。