Obter texto selecionado no momento em aplicativo ativo no cacau

Eu tenho um aplicativo de menu de status que pode ser iniciado usando um atalho do sistema. Quando o aplicativo fica ativo, seria ótimo se eu conseguisse de alguma forma obter o texto selecionado no aplicativo em execução no momento.

Por exemplo, digito alguma coisa no meu editor de texto, seleciono o texto, clico no meu atalho global, surge a minha aplicação e gostaria agora de saber o texto selecionado no editor de texto.

O que eu tenho até agora é o seguinte (código adotado deComo obter coordenadas de tela global do texto atualmente selecionado por meio de APIs de acessibilidade.)

AXUIElementRef systemWideElement = AXUIElementCreateSystemWide();
AXUIElementRef focussedElement = NULL;
AXError error = AXUIElementCopyAttributeValue(systemWideElement, kAXFocusedUIElementAttribute, (CFTypeRef *)&focussedElement);
if (error != kAXErrorSuccess) {
    NSLog(@"Could not get focussed element");
} else {
    AXValueRef selectedTextValue = NULL;
    AXError getSelectedTextError = AXUIElementCopyAttributeValue(focussedElement, kAXSelectedTextAttribute, (CFTypeRef *)&selectedTextValue);
    if (getSelectedTextError == kAXErrorSuccess) {

        selectedText = (__bridge NSString *)(selectedTextValue);
        NSLog(@"%@", selectedText);
    } else {
        NSLog(@"Could not get selected text");
    }
}
if (focussedElement != NULL) CFRelease(focussedElement);
CFRelease(systemWideElement);

O problema aqui é que ele não funciona com aplicativos como o Safari e o Mail ...

obrigado

questionAnswers(1)

yourAnswerToTheQuestion