macos - 以编程方式在 TextEdit 中选择文本范围

标签 macos cocoa applescript macos-carbon

是否可以在 TextEdit 中选择(突出显示)一系列文本(通过 AppleScript、Cocoa 或 Carbon)? 我尝试了这段代码但不起作用:

set value of attribute "AXSelectedTextRange" to {selStart, selLen}

这个属性似乎是只读的。 谢谢。

最佳答案

不确定如何使用AppleScript(不过应该是可能的),使用辅助功能API,您可以执行以下操作:

AXUIElementRef systemWideElement = AXUIElementCreateSystemWide();
AXUIElementRef focussedElement = NULL;
AXError error = AXUIElementCopyAttributeValue(systemWideElement, kAXFocusedUIElementAttribute, (CFTypeRef *)&focussedElement);
CFRange range = CFRangeMake(0, 10);
AXUIElementSetAttributeValue(focussedElement, kAXSelectedTextRangeAttribute, AXValueCreate(kAXValueCFRangeType, &range));
CFRelease(focussedElement);
CFRelease(systemWideElement);

如果 TextEdit 窗口获得焦点,则会选择前 10 个字符。

关于macos - 以编程方式在 TextEdit 中选择文本范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10487350/

相关文章:

objective-c - 如何通过 KVC 设置 NSComboBox 的值?

events - AppleScript 可以监听事件吗?

applescript - 访问内置电源管理器?状态

Swift:文本标签未更新

linux - 脚本和空格

objective-c - 增加 NSTextView 以适应内容会剪裁最后一行文本

swift - 从基于 macOS Swift 的应用程序中运行时,Apple Script 失败

php - 在 Mac 上为 XAMPP 安装 PHP-Redis

c++ - XCode 9.3 升级或替换 libc++

cocoa - NSSplitter 如何防止调整大小时成比例的空间分布