我将很快开发一个应用程序,该应用程序需要在最前面的应用程序窗口中获取当前选定的文本,无论是 Safari、Pages、TextEdit、Word 等,并对该文本进行处理。
我的目标是找到一种适用于尽可能多应用程序的解决方案。到目前为止,我考虑过使用AppleScript,但这会限制可以与我的服务一起使用的应用程序的数量。至少必须支持这些常见的应用程序:Safari、Firefox(没有 AppleScript?)、Word、Pages、Excel、TextEdit...
我还考虑将剪贴板的内容保存在一个临时变量中,然后模拟文本复制操作(Cmd-C),获取文本,然后将原始内容放回原处。这可能会在复制操作时突出显示 Edit 菜单项是模拟的,对我来说似乎有点 hacky。IMO 这个解决方案对于商业产品来说似乎不够好。
我还希望获得更多的选择(即:Safari 或 Word 中页面的完整内容等)以在将来添加一些附加功能。
有关如何实现此行为的任何想法/详细信息?
提前感谢您的任何提示!
注意:我需要至少支持 10.4 及更高版本,但最好也支持 10.4 以上。
更新:
我选择的解决方案:使用“责任链”设计模式 (GOF) 组合 3 种不同的输入法(粘贴板、AppleScript 和辅助功能),自动使用最佳可用输入源。
请注意,当使用 NSAppleScript 的 executeAndReturnError: 方法返回一个 NSAppleEventDescriptor(假设是一个“descriptor”实例)时,为了让 [descriptor stringValue] 方法返回某些内容,在您的 AppleScript 中,您必须在“tell”块之外使用“return someString”否则什么都不会返回。