का उपयोग करके सामने की सबसे अधिक विंडो सेट करना मैं बाहरी ऐप (उदाहरण के लिए टेक्स्टडिट) से एक निश्चित विंडो सेट करना चाहता हूं, जो सबसे अधिक है।अभिगम्यता API
मैं GetFrontProcess का उपयोग करके ऐप का सफलतापूर्वक संदर्भ प्राप्त कर सकता हूं, और जांच सकता हूं कि यह सबसे अधिक है या नहीं। यदि ऐसा नहीं है, तो मैं इसे फोकस करने के लिए setFrontProcess का उपयोग कर सकता हूं।
मैं उस एप्लिकेशन के तहत सभी विंडो की जांच करने के लिए एक्सेसिबिलिटी एपीआई का उपयोग कर सकता हूं। मैं जाँच कर रहा हूँ कि एक निश्चित खिड़की मौजूद है, और यदि ऐसा है तो मैं सामने के खिलाफ आवेदन के सबसे खिड़की तुलना:
//get the front window of textEditApp and store it in 'currentFrontWindow'
AXUIElementCopyAttributeValue(textEditApp, kAXFocusedWindowAttribute, (CFTypeRef *)¤tFrontWindow);
खिड़की मैं में दिलचस्पी है frontmost नहीं है, तो मैं इसे इतना सेट करना होगा। मैंने सोचा कि मैं AXUIElement का उपयोग कर सकता हूं विशेषताएँ ऐसा करने के लिए वैल्यू लेकिन मुझे कोई सफलता नहीं मिल रही है। नीचे यह है कि मैंने इसे करने की कोशिश की है।
//set the front window of textEditApp to be desiredFrontWindow
AXUIElementSetAttributeValue(textEditApp, kAXFocusedUIElementAttribute, desiredFrontWindow);
मैंने जांच की है कि विंडो मौजूद है, और एप्लिकेशन सफलतापूर्वक 'स्विच' है। लेकिन कोड की यह रेखा निर्दिष्ट विंडो को सामने क्यों नहीं लाती है?
धन्यवाद।
धन्यवाद (एक बार फिर) पीटर - यह एक आकर्षण काम करता है। एप्लिकेशन के लिए, मैं kAXFrontMostAttribute की बजाय setFrontProcess का उपयोग कर रहा हूं - क्या यह एक बुरा विचार है? एप्लिकेशन और विंडो के माध्यम से अपना रास्ता घुमाने के बाद, एक निश्चित AXUIElementRef है जो मुझे सामने लाने में दिलचस्पी है (यानी इसे कीबोर्ड फोकस देना)। मैं इसका संदर्भ पाने के लिए तत्वों की परतों के माध्यम से दफन कर सकता हूं, लेकिन मैं इसे ध्यान में कैसे सेट करूं? तत्वों के लिए kAXMainAttribute के बराबर है? शायद मुझे पोस्ट करना चाहिए (अभी तक) एक और प्रश्न –