我想要实现的目标:
目标是创建一个 Mac OS X 库 - dylib/bundle/framework,拦截加载该库的应用程序的所有鼠标和键盘事件。我只想记录这些事件,而不是更改它们。该库需要有一个 C API 来公开记录的事件的详细信息。
我目前所做的:
我实现了两种方法来从应用程序加载的库中检测应用程序的鼠标和键盘事件:
使用 Carbon 安装事件处理程序。由于某种原因,使用 InstallApplicationEventHandler 或 InstallEventHandler( GetApplicationEventTarget(), ... ) 并没有达到目的。只能捕获所有非应用程序事件(除了传递到加载我的库的目标应用程序的事件之外的所有事件)。
CGEventTaps:鼠标( Link )和键盘( Link )。这些都有效,但都是系统范围内的。我希望我的库仅捕获传递到已加载它的应用程序的事件。
有人知道如何创建应用程序范围的键盘和鼠标 Hook /点击,而不是系统范围的吗?
最佳答案
可以使用CGEventTapCreateForPSN创建特定于应用程序的事件点击。 。当前应用程序进程序列号可以使用 ProcessSerialNumber currentProcess; 获取
获取当前进程(&当前进程);
然后为此 PSN 创建并事件点击。
关于c - 检测库内应用程序的键盘和鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15123170/