gpt4 book ai didi

macos - 如何在 Mac OSX 应用程序(如 OSK)上的另一个应用程序的光标位置插入文本?

转载 作者:行者123 更新时间:2023-12-03 16:12:40 27 4
gpt4 key购买 nike

我正在尝试创建一个 OSX 应用程序,它将是屏幕键盘的复制品。是否可以将一些文本插入到另一个事件应用程序的光标位置?提前致谢!

最佳答案

这是可能的。辅助功能允许更改其他应用程序的内容,但您的应用程序无法沙箱化,因此无法通过 AppStore 提供。

CFTypeRef focusedUI;
AXUIElementCopyAttributeValue(AXUIElementCreateSystemWide(), kAXFocusedUIElementAttribute, &focusedUI);

if (focusedUI) {
CFTypeRef textValue, textRange;
// get text content and range
AXUIElementCopyAttributeValue(focusedUI, kAXValueAttribute, &textValue);
AXUIElementCopyAttributeValue(focusedUI, kAXSelectedTextRangeAttribute, &textRange);

NSRange range;
AXValueGetValue(textRange, kAXValueCFRangeType, &range);
// replace current range with new text
NSString *newTextValue = [(__bridge NSString *)textValue stringByReplacingCharactersInRange:range withString:newText];
AXUIElementSetAttributeValue(focusedUI, kAXValueAttribute, (__bridge CFStringRef)newTextValue);
// set cursor to correct position
range.length = 0;
range.location += text.length;
AXValueRef valueRef = AXValueCreate(kAXValueCFRangeType, (const void *)&range);
AXUIElementSetAttributeValue(focusedUI, kAXSelectedTextRangeAttribute, valueRef);

CFRelease(textValue);
CFRelease(textRange);
CFRelease(focusedUI);
}

此代码不检查错误并假设焦点元素是文本区域。

关于macos - 如何在 Mac OSX 应用程序(如 OSK)上的另一个应用程序的光标位置插入文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com