objective-c – 如何从其他应用程序中获取所选文本?

objective-c – 如何从其他应用程序中获取所选文本?,第1张

概述我将很快开发一个应用程序,它需要在最前面的应用程序窗口中获取当前选定的文本,无论是Safari,Pages,TextEdit,Word等,并对该文本执行某些 *** 作. 我的目标是找到一个尽可能多的应用程序的解决方案.到目前为止,我考虑过使用AppleScript,但这会限制可以与我的服务一起使用的应用程序数量.至少必须支持这些常见的应用程序:Safari,Firefox(没有AppleScript?) 我将很快开发一个应用程序,它需要在最前面的应用程序窗口中获取当前选定的文本,无论是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否则什么也不会被退回.

解决方法 可访问性将起作用,但仅限于辅助设备的访问权限已启用.

您需要获取当前应用程序,然后获取其聚焦的UI元素,然后获取其选定的文本范围及其值(全文)和选定的文本范围.您可以只获取其选定的文本,但这可以连接或忽略多个选择.

准备好任何失败的步骤:应用程序可能没有任何窗口,可能没有焦点的UI元素,焦点的UI元素可能没有文本,并且焦点的UI元素可能只有一个空的选定文本范围.

总结

以上是内存溢出为你收集整理的objective-c – 如何从其他应用程序中获取所选文本?全部内容,希望文章能够帮你解决objective-c – 如何从其他应用程序中获取所选文本?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1032800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存