在硬件级别模拟按键 - Windows

时间:2012-07-22 05:08:12

标签: java python hardware keystroke simulate

我正在寻找一种语言或图书馆,以便我可以在最大程度上模拟击键,而无需用力按键。

(我对击键程度的具体衡量标准是,当我的计算机已经在运行关键监听器(如MouseKeys和StickyKeys)时,它是否会产生与物理按键相同的输出。)

我尝试过很多键击仿真方法; java AWT库,Java win32api,python win32com sendKeys,python ctypes按键,以及更多用于python和Java的库,但它们都没有模拟与实际硬件足够接近的键击。
(当Windows MouseKeys处于活动状态时,发送冒号,半冒号或小键盘ADD键的键击只会生成这些字符,而物理印刷机会执行鼠标键单击)

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

我认为没有用于这些高级(以上OS代码)级语言的库将产生足够的东西。我担心我可能不得不屈服于某种BIOS编程。

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

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

谢谢!

4 个答案:

答案 0 :(得分:5)

第二个解决方案,超级复杂,大量的虚拟化,恶魔般的,完全未经测试,但理论上应该可行,除非数据块程序实际上没有写入键盘缓冲区,而是模拟像你这样的按键操作一直在努力。那会很糟糕,我会发现他们的产品描述极具误导性。

您需要:

还有一些关于写入com端口的知识......这看起来像是一个很好的python模块:http://pyserial.sourceforge.net/

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

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

一帆风顺。

答案 3 :(得分:-1)

我没有在Windows机器上对MouseKeys进行测试,所以不能保证它能够正常工作,但你尝试过AutoHotkey吗?