11

我正在寻找一种语言或库,以允许我尽可能地模拟击键,而无需实际按下键。

(我对击键级别的具体测量是当我的计算机已经在运行按键侦听器(例如 MouseKeys 和 StickyKeys)时,它是否会产生与物理按键相同的输出)。

我尝试了许多按键模拟方法;java AWT 库、Java win32api、python win32com sendKeys、python ctypes Key press 以及更多用于 python 和 Java 的库,但它们都没有在与实际硬件足够接近的水平上模拟击键。
(当 Windows 鼠标键处于活动状态时,发送冒号、分号或数字键盘 ADD 键的击键只会产生这些字符,而物理按下则执行鼠标键单击)

我相信这样的方法必须涉及将笔画直接发送到应用程序,而不是仅将它们传递给操作系统。

我的想法是,这些高级(高于操作系统代码)语言的库不会产生任何足够的东西。我担心我可能不得不屈服于某种 BIOS 编程。

有人对此事有任何有用的信息吗?
我将如何模拟低级语言的按键?
我应该寻找我的硬件特定的解决方案(某种富士通硬件 API)吗?

我几乎觉得将机器人编程为简单地坐在硬件旁边并按下按键会更容易。

谢谢!

4

4 回答 4

5

第二种解决方案,超级复杂,大量的虚拟化,恶魔般的,完全未经测试,但理论上应该可以工作,除非 datasnip 程序实际上并没有写入键盘缓冲区,而是像你一直在尝试那样模拟击键。那会很糟糕,我会发现对他们产品的描述具有高度误导性。

你需要:

以及一些写入 com 端口的知识......其中,看起来这里有一个很好的 python 模块:http: //pyserial.sourceforge.net/

首先,编写一个小程序,根据需要将字符、十六进制代码等发送到您选择的 COM 端口。其次,使用 com0com 创建一个虚拟 COM 端口对。此时,将您的程序连接到创建的 COM 端口之一,并将 datasnip 连接到另一个,确保通信双方使用相同的波特率、奇偶校验和停止位以及数据长度参数。

就操作系统而言,此时您应该拥有一个与硬件相同的键盘。

于 2012-07-22T08:08:50.223 回答
2

我使用了这个解决方案http://oblita.com/interception.html 它完全满足我的需求(发送击键直接输入游戏)

于 2014-09-27T19:47:29.513 回答
0

I'm not on a Windows box to test it against MouseKeys, so no guarantees that it will work, but have you tried AutoHotkey?

于 2012-07-22T06:05:38.093 回答
0

可以使用 MSDN 语言吗?它们相当简单且有据可查(谷歌搜索通常比 msdn 网站更好,用于导航)

我发现了这一点,我无法告诉你它是否在足够接近硬件的水平上模拟击键,但它似乎确实能够生成其他程序可以识别的击键事件,这就是你的最终目标。

'Send' 和 'SendWait' 方法似乎是关键。

神速。

于 2012-07-22T05:43:55.417 回答