Pobierz aktualnie wybrany tekst w aktywnej aplikacji w Cocoa
Mam aplikację menu stanu, którą można uruchomić za pomocą skrótu systemowego. Gdy aplikacja staje się aktywna, dobrze byłoby, gdyby udało mi się jakoś pobrać tekst wybrany w aktualnie uruchomionej aplikacji.
Na przykład wpisuję coś w edytorze tekstu, wybieram tekst, wciskam mój globalny skrót, pojawia się moja aplikacja i chciałbym teraz znać wybrany tekst z edytora tekstu.
Do tej pory mam następujące (przyjęty kod zJak uzyskać globalne współrzędne ekranu aktualnie wybranego tekstu za pomocą interfejsów API ułatwień dostępu.)
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);
Problem polega na tym, że nie działa w aplikacjach takich jak Safari i Mail ...
Dzięki