Objective c Mac编程:在应用程序中获取突出显示的文本?
我想尝试一些Mac编程,制作一个简单的后台应用程序,记录用户在其他应用程序中突出显示的文本的所有历史记录,无论是PDF、word文档还是网页(听起来很傻,但对我来说很有用)。有可能吗?在一般情况下是不可能的,而且即使一次只考虑一个应用程序,也非常棘手。对于一些带有代码注入的应用程序,这是可以实现的(但这是非常脆弱的),对于一些使用AppleScript的应用程序,这在理论上是可以实现的(但前提是应用程序可以帮助您) 更常见的是创建,它允许您与其他应用程序粘贴板集成(用户干预)。但几乎没有任何应用程序将API暴露于其突出显示中Objective c Mac编程:在应用程序中获取突出显示的文本?,objective-c,macos,Objective C,Macos,我想尝试一些Mac编程,制作一个简单的后台应用程序,记录用户在其他应用程序中突出显示的文本的所有历史记录,无论是PDF、word文档还是网页(听起来很傻,但对我来说很有用)。有可能吗?在一般情况下是不可能的,而且即使一次只考虑一个应用程序,也非常棘手。对于一些带有代码注入的应用程序,这是可以实现的(但这是非常脆弱的),对于一些使用AppleScript的应用程序,这在理论上是可以实现的(但前提是应用程序可以帮助您) 更常见的是创建,它允许您与其他应用程序粘贴板集成(用户干预)。但几乎没有任何应用
@尼尔斯博特提出了一个有趣的问题,也许这是一种方法。您可以调用
AXUIElementCreateSystemWide
创建一个系统范围的可访问性对象,然后将自己添加为等待kAXSelectedTextChangedNotification
的观察者。这可能适用于可访问的应用程序(这是大多数使用标准小部件的应用程序)。所以这是值得研究的。你能用辅助功能API做到吗?我研究了辅助功能API,并尝试使用辅助功能检查器检查一些常见应用程序的UI,如Chrome、SublimateText。这些应用程序中没有太多关于所选文本的信息。我想知道苹果是如何制作像Dictionary这样的应用程序的。Dictionary通常使用一种服务。仅选择文本不会导致字典应用程序更改其信息。