2013-11-14 2 views
12

시스템 전체 바로 가기를 사용하여 시작할 수있는 상태 메뉴 앱이 있습니다. 앱이 활성화되면 현재 실행중인 애플리케이션에서 선택된 텍스트를 어떻게 든 얻을 수 있다면 좋을 것입니다.코코아에서 현재 선택된 텍스트를 가져 오기

예를 들어 텍스트 편집기에서 텍스트를 선택하고 내 글로벌 단축키를 누르면 내 응용 프로그램이 나타나고 텍스트 편집기에서 선택한 텍스트를 알고 싶습니다.

는 내가 지금까지 가지고하면 다음 (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); 
여기서 문제는 그것이 ... 사파리와 메일 같은 애플 리케이션과

감사

작동하지 않는다는 것입니다

+0

아직이 문제가 해결 되었습니까? –

+0

아니요 ...하지만 결국에는 필요가 없었습니다 ...하지만 앱 스토어에서 어떻게 작동하고 안정적인 방식으로 작동하는지 알고 싶습니다. – Georg

+0

같은 ... 여기를 클릭하십시오. 또한보고 싶습니다. none-Appstore save way ... –

답변

1

이것은 사용자가 메뉴 바 앱을 실행할 때 단순히 발생하는 것이 아니라 서비스 메뉴에서이를 트리거해야하기 때문에 기술적 인 해결책이 아닙니다.

System Service을 사용할 수 있습니다. 현재 선택한 텍스트를 붙여 넣기 보드를 통해 메뉴 막대 응용 프로그램에 보내는 응용 프로그램 서비스를 만듭니다.

관련 문제