Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Mac编程:在应用程序中获取突出显示的文本?_Objective C_Macos - Fatal编程技术网

Objective c Mac编程:在应用程序中获取突出显示的文本?

Objective c Mac编程:在应用程序中获取突出显示的文本?,objective-c,macos,Objective C,Macos,我想尝试一些Mac编程,制作一个简单的后台应用程序,记录用户在其他应用程序中突出显示的文本的所有历史记录,无论是PDF、word文档还是网页(听起来很傻,但对我来说很有用)。有可能吗?在一般情况下是不可能的,而且即使一次只考虑一个应用程序,也非常棘手。对于一些带有代码注入的应用程序,这是可以实现的(但这是非常脆弱的),对于一些使用AppleScript的应用程序,这在理论上是可以实现的(但前提是应用程序可以帮助您) 更常见的是创建,它允许您与其他应用程序粘贴板集成(用户干预)。但几乎没有任何应用

我想尝试一些Mac编程,制作一个简单的后台应用程序,记录用户在其他应用程序中突出显示的文本的所有历史记录,无论是PDF、word文档还是网页(听起来很傻,但对我来说很有用)。有可能吗?

在一般情况下是不可能的,而且即使一次只考虑一个应用程序,也非常棘手。对于一些带有代码注入的应用程序,这是可以实现的(但这是非常脆弱的),对于一些使用AppleScript的应用程序,这在理论上是可以实现的(但前提是应用程序可以帮助您)

更常见的是创建,它允许您与其他应用程序粘贴板集成(用户干预)。但几乎没有任何应用程序将API暴露于其突出显示中



@尼尔斯博特提出了一个有趣的问题,也许这是一种方法。您可以调用
AXUIElementCreateSystemWide
创建一个系统范围的可访问性对象,然后将自己添加为等待
kAXSelectedTextChangedNotification
的观察者。这可能适用于可访问的应用程序(这是大多数使用标准小部件的应用程序)。所以这是值得研究的。

你能用辅助功能API做到吗?我研究了辅助功能API,并尝试使用辅助功能检查器检查一些常见应用程序的UI,如Chrome、SublimateText。这些应用程序中没有太多关于所选文本的信息。我想知道苹果是如何制作像Dictionary这样的应用程序的。Dictionary通常使用一种服务。仅选择文本不会导致字典应用程序更改其信息。