2012-12-07 22 views
5

मैं एक चल रहे एप्लिकेशन के लिए विंडो सूची प्राप्त करना चाहता हूं। मैं [[NSWorkspace sharedWorkspace] runningApplications] से चल रही एप्लिकेशन सूची प्राप्त कर सकता हूं, लेकिन विंडो सूची केवल NSApplication पर उपलब्ध है। NSRunningApplication से NSApplication, या विंडो सूची को और अधिक सीधे प्राप्त करने के लिए कुछ तरीके से कनवर्ट करने का कोई तरीका है?NSRunning अनुप्रयोगों की खिड़कियां कैसे प्राप्त करें

+0

यहां एक ही प्रश्न है, पहले से ही उत्तर दिया गया है: http://stackoverflow.com/questions/2107657/mac-cocoa-getting-a-list-of-windows-using-accessibility-api –

+0

यहां तक ​​कि यहां http: // stackoverflow.com/questions/13759688/how-to-find-out-if-an-instance-of-my-app-is-already-running-or-not/13759928#13759928 –

+0

विधवा सूची का अधिक सीधे अर्थ है? –

उत्तर

6

आपको कोरग्राफिक्स कॉल CGWindowListCopyWindowInfo पर देखने की आवश्यकता है।

आप इसे इस

CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID); 

की तरह फोन और फिर खिड़की सूचना के सरणी पर पुनरावृति, जो कि आप में रुचि रखते हैं आवेदन से कर रहे हैं, और क्या आप इसके साथ चाहते हैं।

+3

हे केन! यह एक अच्छा जवाब/संकेत है, लेकिन यह अभी भी नहीं बताता है कि 'सीजी/एनएसविंडो' कैसे प्राप्त करें ;-) 'NSRunning अनुप्रयोग 'विंडोज/विंडो नंबर प्रदान नहीं करता है और मैं कोशिश कर रहा हूं (शायद कुछ गलत कर रहा हूं) 'CGWindowListCopyWindowInfo' –

+1

के साथ प्राप्त 'CGWindowID'' के साथ' NS/CGWindow' प्राप्त करने के लिए ऐसा इसलिए है क्योंकि आप किसी अन्य एप्लिकेशन के लिए NSWindow नहीं बना सकते हैं। जहां तक ​​एक विशिष्ट अनुप्रयोग के लिए खिड़कियां मिल रही हैं, आप 'NSCunningAplication' की' प्रक्रिया पहचानकर्ता 'संपत्ति के लिए' केसीजीविंडोऑनरपीआईडी' कुंजी 'के मूल्य की जांच और तुलना कर सकते हैं। – mattsven