Получить выбранный текст в активном приложении в Какао
У меня есть приложение в статус-меню, которое можно запустить с помощью системного ярлыка. Когда приложение станет активным, было бы здорово, если бы я мог каким-то образом получить текст, выделенный в текущем запущенном приложении.
Так, например, я набираю что-то в своем текстовом редакторе, выбираю текст, нажимаю на мой глобальный ярлык, появляется мое приложение, и теперь мне бы очень хотелось узнать выбранный текст из текстового редактора.
Что у меня до сих пор является следующее (принят код изКак получить глобальные экранные координаты выделенного в данный момент текста через API специальных возможностей.)
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);
Проблема в том, что он не работает с приложениями, такими как Safari и Mail ...
Спасибо