【问题标题】:How to make keyboard recorder program record when it is behind another window/program? [duplicate]当键盘记录器程序位于另一个窗口/程序后面时,如何进行记录? [复制]
【发布时间】:2014-02-14 17:08:44
【问题描述】:

我用java写了一个键盘录音程序。我面临的问题是我的程序在所有窗口前都可以工作。我希望它在隐藏或位于其他窗口后面时记录键盘活动。我怎么能做到这一点?非常感谢。

【问题讨论】:

  • 不,您不能使用核心 Java 创建按键记录程序。您将需要使用 JNI、JNA 或其他编程语言来编写这个潜在的恶意程序。
  • 如果您打算在 Windows 上执行此操作,我建议您使用 autoIT 或 AutoHotkey,互联网上都有很好的示例。
  • @Selim:AutoIt 和 AutoHotKey 非常适合创建热键,特殊按键按下时会调用函数,但我认为它们不能单独用于操作系统键盘挂钩这就是OP所需要的。有关解决此问题所需的更多信息,请参阅 Mark W 的链接。投票结束问题作为重复。
  • @HovercraftFullOfEels 我读不出这个问题。我过去在很多游戏中都使用过 AutoIT,我可以看出它能够在按键事件上做一些事情,即使它不是焦点窗口。

标签: java user-interface keyboard


【解决方案1】:

如果您为 Windows 执行此操作,您有 2 个选择。内核过滤器驱动程序将捕获所有键盘输入,而不管它针对的是哪个窗口。 有关示例代码,请参阅此 http://code.msdn.microsoft.com/windowshardware/Kbfiltr-WDF-Version-685ff5c4 请注意,此驱动程序可能会很好地捕获键盘生成的按键向下按键代码,您需要将这些代码组装成完整的按键。

另一种方法是通过操作系统挂钩进入消息泵。初学者看这个 http://msdn.microsoft.com/en-us/library/windows/desktop/ms632589(v=vs.85).aspx

您需要为 Windows 操作系统上的这两种键盘捕获样式编写本机代码。 Java 沙箱会在 Windows 上防止这种情况发生。

【讨论】:

    【解决方案2】:

    一般来说,你不能。操作系统决定键盘和鼠标事件的发送位置,而您的不会将您想要的事件发送到后台应用程序。

    您需要挂钩操作系统。根据您的操作系统,可能会有 Java 绑定。更有可能的是,您需要使用本机代码编写服务或内核扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      相关资源
      最近更新 更多