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