我希望能够记录用户的鼠标移动,点击和键盘输入。如果它是一个跨平台的解决方案,那将会很棒。用Java或C++记录鼠标移动,点击和键盘输入
我想找回这样的(伪代码):
鼠标移动到500,500 鼠标双击点击 鼠标移动到800,300 鼠标左键点击 键盘输入的“Hello World “
C++或Java有没有可以做到这一点的任何类?如果我使用C++,我可能会使用QT框架。
编辑:
我应该说本来这个,但我想记录的移动和点击应用程序的GUI之外,因此在桌面上了。
我希望能够记录用户的鼠标移动,点击和键盘输入。如果它是一个跨平台的解决方案,那将会很棒。用Java或C++记录鼠标移动,点击和键盘输入
我想找回这样的(伪代码):
鼠标移动到500,500 鼠标双击点击 鼠标移动到800,300 鼠标左键点击 键盘输入的“Hello World “
C++或Java有没有可以做到这一点的任何类?如果我使用C++,我可能会使用QT框架。
编辑:
我应该说本来这个,但我想记录的移动和点击应用程序的GUI之外,因此在桌面上了。
我不认为有一个跨平台工具包专门用于从窗口中获取输入,但绝大多数工具包都提供此功能。有两个很好的选择:
如果你想陷阱在整个GUI系统的事件,不只是一个应用程序,有跨平台解决方案的可能性不大。但是,事件挂钩部分可以很容易地从录制部分分离,因此您可以使程序的大部分跨平台。
对于Windows,you need this 17 year old (!) document。 (男人,我老了!)
http://msdn.microsoft.com/en-us/library/ms997537.aspx:“*此内容已被删除。”*“ –
@Martin - 更新的链接去通过www.archive.org –
在Windows上,这叫做Journal Record Hook。你应该用C或C++编写钩子部分,在java中做技术上可能是可行的,但这不是一个好主意,你希望你的钩子程序拥有尽可能少的依赖性,并尽可能快。系统广泛的钩子,尤其是日志会给键盘和鼠标输入增加很多开销,您希望尽可能地减小您的影响。
您通过使用SetWindowsHookEx传递WH_JOURNALRECORD
来安装Windows挂钩以获取日志记录挂钩。
你也可以通过安装WH_KEYBOARD_LL
和WH_MOUSE_LL
来获得这个工作,但是你的两个钩子程序将被单独调用,你将不得不编写自己的代码来按顺序排列事件。
我怀疑你会找到一个跨平台的解决方案。
听起来像Qt可能允许您实现延伸到应用程序之外的窗口系统的事件过滤器。另请参见Qt - top level widget with keyboard and mouse event transparency?
您是否需要记录系统范围内的输入或仅在您的应用程序的主窗口中? – finnw
看到这个类似的问题:http://stackoverflow.com/questions/2147903/retrieve-window-handle-and-press-button-programatically – lsalamon
这是问题是为c# – Joe