2011-08-09 2 views
7

내게 필요한 옵션 API를 사용하여 창 너비, 높이 및 위치를 얻는 방법을 설명하는 question and answer을 찾았습니다. 최소 크기, 최대 크기, 크기 조정 등을 찾을 수있는 방법이 있습니까?OS X 접근성 API 최소 너비

편집 :

내 현재의 접근 방식은 AXUIElementCopyAttributeValue를 사용하는 것입니다하지만 난 그게 가능 모르겠어요. reference을 보면 액세스 할 수있는 많은 속성이 있음을 알 수 있지만 창이 최소 또는 최대 크기에 대한 언급을 찾을 수 없습니다. 위치는이 API를 통해 액세스 할 수 있습니다.

이제는 윈도우 크기와 위치에도 액세스 할 수있는 Son of Grab이라는 샘플 코드를 살펴 보았지만 최소 또는 최대 크기로도 작동하지는 않습니다.

+1

또한 가로 세로 비율을 원할 수도 있습니다. –

답변

3

내가 알 수있는 한 쉬운 방법은 없습니다. 나는 하나를 발견했다 매우 조잡한 창의 최대 및 최소 크기를 얻는 방법.

너비와 높이를 매우 크게 설정하여 창 크기가 얼마나 멀리 있는지 확인한 다음이 크기를 최대로 기억한 다음 너비와 높이를 작은 수로 설정하고 다시 동일한 값으로 설정합니다. 이 모든 후 난 그냥 너비와 높이 원래 값으로 재설정.

이 문제는 사용자가 창 크기를 조정할 수 있음을 잘 보여줍니다.

리사이즈 증가분에 관해서는 (지금은) 그 정보를 얻는 것에 대한 해결 방법을 생각할 수 없습니다.

경우
AXUIElementRef window; // The window 

AXValueRef sizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window]; 
CGSize windowSize; 
AXValueGetValue(sizeValue, kAXValueCGSizeType, &windowSize); 

CGFloat windowWidth = windowSize.width; 
CGFloat windowHeight = windowSize.height; 

// Set it to a very large number 
[UIElementUtilities setStringValue:@"w=5000 h=5000" forAttribute:@"AXSize" ofUIElement:window]; 

AXValueRef maxSizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window]; 
CGSize maxWindowSize; 
AXValueGetValue(maxSizeValue, kAXValueCGSizeType, &maxWindowSize); 

CGFloat maxWindowWidth = maxWindowSize.width; 
CGFloat maxWindowHeight = maxWindowSize.height; 

NSLog(@"max width = %f. max height = %f.", maxWindowWidth, maxWindowHeight); 

// Set it to a very small number 
[UIElementUtilities setStringValue:@"w=0 h=0" forAttribute:@"AXSize" ofUIElement:window]; 

AXValueRef minSizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window]; 
CGSize minWindowSize; 
AXValueGetValue(minSizeValue, kAXValueCGSizeType, &minWindowSize); 

CGFloat minWindowWidth = minWindowSize.width; 
CGFloat minWindowHeight = minWindowSize.height; 

NSLog(@"min width = %f. min height = %f.", minWindowWidth, minWindowHeight); 

// Reset size 
[UIElementUtilities setStringValue:[NSString stringWithFormat:@"w=%f h=%f", windowWidth, windowHeight] forAttribute:@"AXSize" ofUIElement:window]; 

당신이 궁금해, UIElementUtilities 내가 UIElementInspector라는 애플 예제 프로젝트 중 하나에서 찍은 클래스입니다 :

어쨌든 여기에 최대 및 최소 크기를 작업에 내가 가지고있는 코드입니다.