5

我想制作一个类似于 TextExpander 之类的应用程序,但我不确定您将如何截取文本。据我所知,我需要从 NSAccessability 开始。谁能分享一些片段,或者至少指出我正确的方向?

4

2 回答 2

6

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

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

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

另一种选择是使用Quartz 事件服务 (CGEvent) API,它提供(除其他外)模拟关键事件的低级方法。

于 2013-01-03T23:31:58.960 回答
1

编辑:没关系。你问的是Mac OS。我以为你在问iOS。

你应该看看TextExpander 是如何被其他应用程序使用的。目标应用程序必须通过将 TE 提供的对象作为文本字段的委托来构建对 TE 的支持。您不能在其他人的应用程序中运行您的代码。他们必须将您的代码编译到他们的应用程序中。这就是为什么有一个 TextExpander SDK 的原因。

一旦 TextExpander 代码位于目标应用程序中,文本字段委托就会通过查找放入共享粘贴板的片段来获取共享片段。

于 2013-01-03T23:12:35.520 回答