gpt4 book ai didi

macos - 从 osx 中的任何应用程序获取选定文本的辅助功能 API 替代方案

转载 作者:行者123 更新时间:2023-12-01 13:07:12 25 4
gpt4 key购买 nike

我已经写了一个代码,让我能够在 TextEdit.app 或其他几个应用程序中获取选定的文本。我的问题是我需要在任何应用程序中获取选定的文本。似乎辅助功能 API 无法获取每个应用程序的选定文本,因为我可以通过使用辅助功能检查器来证明。

第一张图片显示了辅助功能 API 如何从 TextEdit.app 中的 AXTextArea 获取所选文本作为属性:

The Accessibility Inspector detecting AXTextArea and AXSelectedText in the Text Edit App

然后我尝试从 TextWrangler.app 获取相同的信息,但它不会以相同的方式工作。

The Accessibility Inspector can't detect selected text in the Text Wrangler App

是否有其他方法可以从任何应用程序或至少大多数应用程序中获取选定的文本信息?

最佳答案

我知道的唯一选择是发送 Cmd-c 并监视粘贴板:

+ (void)sendCommandC
{
CGKeyCode _C = [[DJRKeyboardTools sharedInstance] keyCodeForChar:'c'];
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef pasteCommandDown = CGEventCreateKeyboardEvent(source, _C, YES);
CGEventSetFlags(pasteCommandDown, kCGEventFlagMaskCommand);
CGEventRef pasteCommandUp = CGEventCreateKeyboardEvent(source, _C, NO);

CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandDown);
CGEventPost(kCGAnnotatedSessionEventTap, pasteCommandUp);

CFRelease(pasteCommandUp);
CFRelease(pasteCommandDown);
CFRelease(source);
}

那段代码将发布键盘事件。你需要更多的代码。我的这些要点可以帮助您开始:
  • https://gist.github.com/djromero/7326451键盘事件(发布键盘快捷键)
  • https://gist.github.com/djromero/7326432键盘工具(获取正确的字符代码)
  • https://gist.github.com/djromero/7326400监控粘贴板
  • 关于macos - 从 osx 中的任何应用程序获取选定文本的辅助功能 API 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19798583/

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