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