2013-02-27 65 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創建和事件分接點。

相關問題