4

假设我有一个无窗口应用程序,它在任务栏上只有一个图标(Windows、Mac OS X 和 Linux)。我希望它能够捕获一些键和组合键,比如 Right Control + Right Shift。键入正确的组合后,它会做一些事情,比如截图。我可以做无窗口应用程序、任务栏上的图标和屏幕截图,但我不知道如何全局监控键盘的组合键。请多多指教。非常感谢任何帮助或提示!提前致谢!

4

1 回答 1

9

系统范围的密钥抓取是一个棘手的主题,但系统范围的密钥挂钩更加棘手。每个 OS/GUI 都有自己的解决方案,至少对于抓取来说是这样。Qt4 没有公开这样的特性,但是Qt eXTension 库用它的QxtGlobalShortcut解决了这个问题。这是一个很好的包装:

因此,您可以获取其他应用程序无法获得的显式组合键,即特定的键和修饰符(XGrabKey() 允许更多)。这里不支持按键序列,即连续的按键组合。


键盘挂钩功能更强大,因为它允许查看输入事件(甚至过滤它们)。它不仅被键盘记录器使用,而且是这里的典型关联。

如果您使用 Windows,那么您可以阅读:

在 X11 中它要复杂得多。您可能至少需要阅读两页:

有一个X Event Interception Extension,但它没有被维护并最终被删除。

希望它可以在没有 X11 基础架构的帮助下完成。在 Linux 2.6 内核中有一个“事件接口”,称为evdev,可以在这里利用。详细信息可以在logkeys Linux keylogger的源代码中找到。它也可以通过类似于 evdev 的效果来完成。请参阅我的 PoC 项目: kaos - 关键活动屏幕显示。

而且我没有Mac,所以没有进一步的参考。;)

于 2010-07-01T01:58:00.773 回答