我希望能够记录用户的鼠标移动,点击和键盘输入。如果它是一个跨平台的解决方案,那就太好了。
我想得到这样的东西(伪代码):
鼠标移动到500,500 鼠标双击 鼠标移动到800,300 鼠标左键单击 键盘输入“Hello World”
C ++或Java是否有任何可以执行此操作的类?如果我使用的是C ++,我可能会使用QT框架。
编辑:
我本来应该这么说,但是我想记录应用程序gui之外的动作和点击,所以在桌面上也是如此。
答案 0 :(得分:0)
GLUT这样做,但它与OpenGL相关,这可能对你的项目来说太过分了。
OpenGL是跨平台的。
答案 1 :(得分:0)
我不相信有一个专门用于从窗口获取输入的跨平台工具包,仅此而已,但大多数工具包都提供此功能。两个不错的选择是:
答案 2 :(得分:0)
如果您想在整个GUI系统中捕获事件,而不仅仅是一个应用程序,那么跨平台解决方案的可能性就不大了。但是,事件挂钩部分可以很容易地与录制部分分开,因此您可以使大部分程序跨平台。
对于Windows,you need this 17 year old (!) document。 (伙计,我老了!)
答案 3 :(得分:0)
在Windows上,这称为Journal Record Hook。你应该用C或C ++编写钩子部分,在技术上可能在java中做,但这不是一个好主意,你希望你的钩子程序尽可能少的依赖,并尽可能快。系统范围的钩子,特别是日志为键盘和鼠标输入增加了很多开销,你想尽可能地减小你的影响。
使用SetWindowsHookEx传递WH_JOURNALRECORD
来安装Windows挂钩以获取日志记录挂钩。
您也可以(可能)通过安装WH_KEYBOARD_LL
和WH_MOUSE_LL
来实现这一点,但是您的两个钩子程序将被单独调用,并且您必须编写自己的代码来放置事件按顺序。
我怀疑你会找到一个跨平台的解决方案。
答案 4 :(得分:0)
听起来Qt可能允许您实现超出应用程序范围的事件过滤器到窗口系统。另请参阅Qt - top level widget with keyboard and mouse event transparency?