c - 检测库内应用程序的键盘和鼠标事件

标签 c macos events keyboard mouse

我想要实现的目标:

目标是创建一个 Mac OS X 库 - dylib/bundle/framework,拦截加载该库的应用程序的所有鼠标和键盘事件。我只想记录这些事件,而不是更改它们。该库需要有一个 C API 来公开记录的事件的详细信息。

我目前所做的:

我实现了两种方法来从应用程序加载的库中检测应用程序的鼠标和键盘事件:

  1. 使用 Carbon 安装事件处理程序。由于某种原因,使用 InstallApplicationEventHandler 或 InstallEventHandler( GetApplicationEventTarget(), ... ) 并没有达到目的。只能捕获所有非应用程序事件(除了传递到加载我的库的目标应用程序的事件之外的所有事件)。

  2. CGEventTaps:鼠标( Link )和键盘( Link )。这些都有效,但都是系统范围内的。我希望我的库仅捕获传递到已加载它的应用程序的事件。

有人知道如何创建应用程序范围的键盘和鼠标 Hook /点击,而不是系统范围的吗?

最佳答案

可以使用CGEventTapCreateForPSN创建特定于应用程序的事件点击。 。当前应用程序进程序列号可以使用
ProcessSerialNumber currentProcess; 获取 获取当前进程(&当前进程);

然后为此 PSN 创建并事件点击。

关于c - 检测库内应用程序的键盘和鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15123170/

相关文章:

c++ - VLFeat kmeans C API 解释

c - 冒泡排序双向链表

java - 使用 Esper,如何对事件进行动态过滤?

javascript - 如何存储/隐藏 JavaScript 事件并在以后重用?

c - 在 Makefile 中获取源代码结构

c++ - malloc 在 Linux 中挂起

macos - OSX 安全 find-identity 在 ssh-ed 机器中找不到身份

c++ - 如何将 OpenCV 包含到 XCode 4 c++ 项目中?

ios - Xcode 7.1 - 未授权使用此服务错误

C# Windows 窗体处理单击垃圾邮件