2013-02-27 61 views
0

我想达到的目标:检测库内部器件的应用的键盘和鼠标事件

目标是让Mac OS X的库 - dylib /包/框架,它可以拦截应用程序的所有鼠标和键盘事件加载了图书馆。我只想记录这些事件,而不是改变它们。该库需要有一个C API来公开所记录事件的细节。

我所目前做:

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

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

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

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

+0

“我只想记录这些事件”为了什么? – 2013-02-27 21:55:46

+0

它不是一个键盘记录程序,如果它是你要求的。我希望这个库能够记住上次按下的按键和鼠标点击的最后位置。 – Ivan 2013-02-27 22:03:11

回答

0

可以使用CGEventTapCreateForPSN创建特定于应用的事件分支。当前应用程序序列号可以使用
ProcessSerialNumber currentProcess; GetCurrentProcess(&currentProcess);

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

相关问题