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

questionAnswers(1)

yourAnswerToTheQuestion