模拟硬件输入的最佳方法是什么?

时间:2016-09-12 21:16:12

标签: input keyboard click hardware emulation

我使用AutoIt因为它 多功能性和简洁性,以解决Windows上的重复问题。现在我想尝试改进代码的工作方式。

我遇到的主要问题是在非软件级别上使用硬件输入。 我想使用" pure"输入我按键盘上的键或点击我的鼠标,而不是用AutoIt模拟鼠标点击或按键。

我在谷歌搜索了几天的解决方案,然后问这里,我有两个想法。也许他们甚至工作,但我确信他们不是解决问题的最佳方法。

1:使用C ++键盘/鼠标API - 但是它能够完美地模拟"硬件"信号还是可以被视为虚拟信号?

2:使用Arduino - 我也为此找到了相同结果的API。我认为这会很好,因为它是关于来自USB源的输入。我可以请求发送某个键,因为键盘可以自己按键。是否过于复杂和夸张?

但是我可能错了,你嘲笑这些想法,因为他们是愚蠢和疯狂的:P

我对C ++有一点了解。如果这是实现这一目标的最佳方式,那么仅仅为了解决问题难以学习吗?

但最重要的问题是:这些解决方案是好的,还是有更简单的方法?

提前致谢!

2 个答案:

答案 0 :(得分:0)

我不认为我完全理解你在这里要解决的问题,但我确实有使用Arduino作为键盘/鼠标模拟器的经验。这里有内置鼠标和键盘库的文档:https://www.arduino.cc/en/Reference/MouseKeyboard。我会注意到这些功能仅适用于某些Arduino型号,因此在购买Arduino板之前一定要检查它是否兼容。根据我的经验,它很容易编程并且运行良好。

答案 1 :(得分:0)

我不确定您要做什么,但我认为您正在尝试使您的计算机认为您在移动鼠标,几个月来我一直在寻找答案,最后即使在Fortnite中,我也能够移动鼠标(一点也不容易)。

我使用了在sendtex gihub的页面中找到的模块(他在那说作者),我将URL留给您。 https://github.com/Sentdex/pygta5/blob/master/keys.py

该模块使用名为ctypes的库,该库提供与C兼容的数据类型,并使您能够调用DLL或共享库中的函数。 您可以在此处找到有关ctypes的更多信息: https://docs.python.org/2/library/ctypes.html

由于我不是高级程序员,所以我不完全知道它是如何工作的,但是我知道它的作用和用法。该模块有一个包含所有功能的Keys类((只有两个真正在乎,directMouse和directkey,其他用于使主要功能正常工作),还有几个我不知道真正起作用的类。

当您要移动鼠标时,您可能只在乎directMouse函数,该功能使鼠标立即移动,但不移动到指定坐标,而是将给定数字与当前鼠标位置相加。 此功能还允许您通过输入以下参数来左右单击鼠标左键:

buttons=keys.mouse_lb_press用于按下鼠标左键

buttons=keys.mouse_lb_release用于释放左键

buttons=keys.mouse_rb_press用于按下右键

buttons=keys.mouse_rb_release用于释放右键

,您可以将动作与按钮动作结合使用 例如:

keys.directMouse(20, 20, buttons=keys.mouse_rb_press)

这将使当前鼠标的位置左移20像素,低20像素,并按住鼠标右键。

如果您不理解我的解释,建议您看一下代码,最后,您将找到一个示例代码,它将演示该程序的工作原理,您将看到它的作用并容易识别它是如何工作的有效。

希望我能帮到你。