检测应用程序在库中的键盘和鼠标事件

时间:2013-02-27 21:51:59

标签: c macos events keyboard mouse

我想要实现的目标:

目标是创建一个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/)。这些工作,但在整个系统范围内。我希望我的库只捕获传递给已加载它的应用程序的事件。

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

1 个答案:

答案 0 :(得分:0)

可以使用CGEventTapCreateForPSN创建特定于应用程序的事件选项卡。可以使用ProcessSerialNumber currentProcess; GetCurrentProcess(&currentProcess);

获取当前的申请流程序列号

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