2011-08-09 14 views
7

मुझे एक और question and answer मिला जो एक्सेसिबिलिटी एपीआई का उपयोग करके विंडो की चौड़ाई, ऊंचाई और स्थिति कैसे प्राप्त करें। क्या न्यूनतम आकार, अधिकतम आकार, वेतन वृद्धि का आकार आदि खोजने का कोई तरीका है?ओएस एक्स एक्सेसिबिलिटी एपीआई न्यूनतम चौड़ाई

संपादित करें:

मेरे वर्तमान दृष्टिकोण AXUIElementCopyAttributeValue उपयोग करने के लिए है, लेकिन मुझे यकीन है कि संभव है नहीं कर रहा हूँ। reference पर देखकर आप देख सकते हैं कि बहुत सारी संपत्तियां मैं एक्सेस कर सकता हूं, लेकिन मुझे विंडो के न्यूनतम या अधिकतम आकार का कोई उल्लेख नहीं मिल रहा है। ध्यान दें ऐसा लगता है कि इस एपीआई के माध्यम से स्थिति सुलभ है।

अब मैं कुछ नमूना कोड भी देख रहा था जिसे 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 कहा जाता है में से एक से लिया गया है:

वैसे भी यहाँ कोड अधिकतम और न्यूनतम आकार बाहर काम करने के लिए मेरे पास है।