用于截取另一个应用中的文本输入的API?

Wes*_*ton 5 macos cocoa objective-c

我想创建一个类似于TextExpander的应用程序,但我不确定你将如何拦截文本.据我所知,我需要从NSAccessability开始.任何人都可以分享一些片段,或者至少指出我正确的方向吗?

omz*_*omz 6

首先,您应该知道,由于沙盒要求,如果您想在App Store中销售应用程序,则根本不可能.

如果您不打算对应用程序进行沙盒处理,则可以使用NSEvent类方法addGlobalMonitorForEventsMatchingMask:创建一个全局键事件处理程序,该句柄在其他应用程序中按下键时会被调用(但不是您自己的应用程序,请使用addLocalMonitor...它).

要实际插入片段,如TextExpander,有几种方法.您可以使用辅助功能API,但这要求您定位的应用程序支持辅助功能,但情况并非总是如此.

另一种选择是使用Quartz Event Services(CGEvent)API,它提供(除其他外)一种低级方法来模拟关键事件.