システム全体のショートカットを使用して開始できるステータス メニュー アプリがあります。アプリがアクティブになると、現在実行中のアプリケーションで選択されているテキストを何らかの方法で取得できれば素晴らしいと思います。
たとえば、テキスト エディターに何かを入力し、テキストを選択し、グローバル ショートカットを押すと、アプリが起動し、テキスト エディターから選択したテキストを知りたいと思います。
私がこれまでに持っているものは次のとおりです (アクセシビリティ 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 やメールなどのアプリでは動作しないことです...
ありがとう