Ich habe eine Statusmenü-App, die mit einer systemweiten Verknüpfung gestartet werden kann. Wenn die App aktiv wird, wäre es großartig, wenn ich den Text, der in der aktuell laufenden Anwendung ausgewählt ist, irgendwie bekommen könnte.Aktuell ausgewählten Text in aktiver Anwendung in Cocoa
Also zum Beispiel tippe ich etwas in meinen Texteditor, wähle den Text aus, klicke auf meine globale Verknüpfung, meine App erscheint und ich würde nun gerne den ausgewählten Text aus dem Texteditor kennen.
Was ich habe, so weit ist der folgende (angenommen Code von How to get global screen coordinates of currently selected text via Accessibility APIs.)
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);
Das Problem hier ist, dass es nicht mit Anwendungen wie Safari und E-Mail ...
Dank funktioniert
Haben Sie dieses Problem schon gelöst? –
Nee ... aber ich habe es am Ende nicht gebraucht ... wäre aber immer noch interessiert zu wissen, wie es im App-Store sicher und zuverlässig funktionieren würde ... – Georg
Das selbe hier ... Würde auch gerne sehen ein nicht-Appstore speichern Weg ... –