在硬件级别模拟按键-Windows - java

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

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

我已经尝试了许多模拟按键的方法。
Java AWT库,Java win32api,python win32com sendKeys,python ctypes Key press以及许多其他针对python和Java的库,但是它们都没有在与实际硬件足够接近的水平上模拟键击。
(当Windows MouseKeys处于活动状态时,发送冒号,半冒号或numpad ADD键的击键只会产生这些字符,在物理按下时会执行MouseKeys单击)

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

我的想法是,这些高级(高于OS代码)语言的库不会产生足够的东西。我担心我可能不得不弯腰某种BIOS编程。

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

我几乎感觉到对机器人进行编程以使其简单地坐在硬件上并按下键会更容易。

谢谢!

参考方案

第二种解决方案是超级卷积,大量虚拟化,极具破坏性的,完全未经测试的,但从理论上讲应该可以使用,除非datasnip程序并未真正写入键盘缓冲区,而是像您一直尝试的那样模拟了击键。那太糟了,我会发现他们的产品描述极具误导性。

你需要:

  • http://www.priority1design.com.au/datasnip.html
  • http://sourceforge.net/projects/com0com/
  • 以及一些写com端口的知识...,看来这里有一个不错的python模块:http://pyserial.sourceforge.net/

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

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

    Java File.delete()有时会留下无法访问的文件(Windows) - java

    我试图以编程方式从正在运行的(!)系统中清除日志文件,该系统由数个Java和非Java服务器组成。我使用了Java的File.delete()操作,它通常可以正常工作。对于当前未删除的正在使用的日志文件,我也非常满意,因此只要File.delete()返回false时,我就将其记录为警告。但是,在目前仍由NON-Java应用程序(Postgres,Apach…

    在Windows中使用Java将焦点设置为非Java应用程序 - java

    我想编写一个为Windows中的非Java应用程序创建输入的应用程序。使用Robot类,很容易生成输入,但是我需要将焦点设置到另一个应用程序的文本框中,然后在该文本框中输入文本。不用担心我不是在尝试写恶意的东西,我只是想使用Java来“扩展”用Delphi编写的旧应用程序。 参考方案 CMDOW是一个命令行实用程序,可让您执行各种窗口操作,例如激活/停用,列…

    如何知道Windows中Java下哪些进程正在使用文件? - java

    我们有一个用Java编写的计划任务,该任务在Windows平台上失败了,因为有时需要删除的文件仍在使用中。从Java内是否有一种方法可以查看哪些进程正在使用文件并获取有关它们的信息?我想我会补充说,如果有必要,我愿意使用JNA或JNI,而且我想一定会的。 参考方案 我在Github上为JNA项目问了类似的问题, @matthiasblaesing 编写了代码…

    Java:找到特定字符并获取子字符串 - java

    我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…

    Java:线程池如何将线程映射到可运行对象 - java

    试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …