2011-08-09 24 views
7

我發現另一個question and answer解釋瞭如何使用Accessibility API獲取窗口的寬度,高度和位置。有什麼方法可以找到最小尺寸,最大尺寸,調整增量等嗎?OS X Accessibility 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蘋果示例項目中獲取的類。