代码之家  ›  专栏  ›  技术社区  ›  Joe

用java或C++记录鼠标移动、点击和键盘输入

  •  5
  • Joe  · 技术社区  · 16 年前

    我想用户可以从键盘上记录下鼠标的点击动作。如果这是一个跨平台的解决方案,那就太好了。

    鼠标移动到了500500 鼠标双击 鼠标移动到800300 鼠标左键单击 键盘输入“Hello World”

    C++或java有没有任何类可以做到这一点?如果我使用C++,我可能会使用QT框架。

    编辑:

    我本来应该这么说的,但是我想记录应用程序gui之外的移动和单击,所以也要记录在桌面上。

    5 回复  |  直到 16 年前
        1
  •  0
  •   Robert Greiner    16 年前

    GLUT 这样做,但它与OpenGL捆绑在一起,这可能会对您的项目造成过大的损失。

    OpenGL是跨平台的。

        2
  •  0
  •   Joey Adams    16 年前

    我不相信有专门用于从窗口获取输入的跨平台工具包,但是大多数工具箱都提供了这种功能。两个好的选择是:

    1. 在每个平台本机实现该功能,因为在X11、Windows、macosx等中它应该很简单。
        3
  •  0
  •   John Knoeller    16 年前

    在Windows上,这称为 Journal Record Hook . 你应该在C或C++中编写钩子部分,在java中技术上可能是这样,但是这不是一个好主意,你希望钩子子程尽可能少的依赖关系,并且要尽快。全系统挂钩, 尤其地 日记本给键盘和鼠标输入增加了很多开销,你要尽量缩小你的影响。

    使用安装Windows钩子 SetWindowsHookEx WH_JOURNALRECORD 为了得到一个日志记录钩子。

    你也可以(也许)通过安装这两个来实现这一点 WH_KEYBOARD_LL WH_MOUSE_LL ,但您的两个钩子程将被分开调用,并且您必须编写自己的代码来整理事件。

    我怀疑你会找到一个跨平台的解决方案。

        5
  •  0
  •   Daniel Earwicker    14 年前

    如果您想在整个GUI系统中捕获事件,而不仅仅是一个应用程序,那么跨平台解决方案的可能性不大。然而,事件挂钩部分可以很容易地从记录部分分离出来,因此您可以使大部分程序跨平台。

    对于Windows, you need this 17 year old (!) document . (老兄,我老了!)