0

我想要达到的目标:

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

我目前所做的:

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

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

2)CGEventTaps:鼠标(http://osxbook.com/book/bonus/chapter2/altermouse/)和键盘(http://osxbook.com/book/bonus/chapter2/alterkeys/)。这些工作,但在系统范围内。我希望我的库仅捕获传递给已加载它的应用程序的事件。

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

4

1 回答 1

0

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

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

于 2013-06-06T05:33:37.160 回答