2013-10-17 3 views

답변

0

가장 가까운 사용자는 OS X의 접근성 프로토콜을 사용하는 것입니다. 이는 장애가있는 사용자가 컴퓨터를 사용하도록 돕기위한 것이지만 많은 응용 프로그램은 컴퓨터를 지원하지 않거나 컴퓨터를 잘 지원하지 않습니다. 때문에 당신이 FocusedUIElementAttribute 단계를 넘어받지 않습니다 많은 응용 프로그램과 프로토콜에 대한 드문 드문 지원

appRef = AXUIElementCreateApplication(appPID); 
focusElemRef = AXUIElementCopyAttributeValue(appRef,kAXFocusedUIElementAttribute, &theValue) 
AXUIElementCopyAttributeValue(focusElemRef, kAXSelectedTextRangeAttribute, &selRangeValue); 
AXUIElementCopyParameterizedAttributeValue(focusElemRef, kAXBoundsForRangeParameterizedAttribute, adjSelRangeValue, &boundsValue); 

,하지만 일부 응용 프로그램과 함께 작동합니까 :

절차는 다음과 같을 것이다.

+0

답장을 보내 주셔서 감사합니다. 예, 접근성 API를 사용할 생각 이었지만, 사용하기 전에는 사용하지 않았습니다. Apple의 UIElementInspector 샘플 코드와 문서를 통해 내가 어떻게해야하는지 알아 내려고합니다. 당신이 쓴 글의 라인을 따라 뭔가가 시작하는 것이 좋은 방법 인 것처럼 보입니다. – Dennis

1

아니요, 전 세계적으로 할 방법이 없습니다. 당신이를 NSTextView에서처럼, 자신의 응용 프로그램에서 그것을하고 싶은 경우

, 당신은 이런 식으로 할 거라고 :

NSRange range = [textView selectedRange]; 
NSRange newRange = [[textView layoutManager] glyphRangeForCharacterRange:range actualCharacterRange:NULL]; 
NSRect rect = [[textView layoutManager] boundingRectForGlyphRange:newRange inTextContainer:[textView textContainer]]; 

RECT는 경우 어디에서 선택한 텍스트의 RECT, 또는 것 삽입 점이 있지만 선택 항목이없는 경우 rect.origin은 삽입 점의 뷰 상대 위치입니다.