2013-02-08 3 views
6

का उपयोग कर किसी एप्लिकेशन की विशिष्ट विंडो पर फ़ोकस सेट करें मैं एप्सस्क्रिप्ट का उपयोग करके किसी दिए गए एप्लिकेशन की विशिष्ट विंडो पर फ़ोकस कैसे सेट कर सकता हूं?एप्सस्क्रिप्ट

मेरे पास विभिन्न आईटर्म 2 विंडोज़ विभिन्न डिस्प्ले पर चल रही हैं। मैं एप्सस्क्रिप्ट का उपयोग कर एक निर्दिष्ट विंडो पर फोकस सेट करना चाहता हूं।

मुझे दो चीजों की आवश्यकता है, एक स्क्रिप्ट जो विंडो आईडी एकत्र करती है और उन्हें stdout पर प्रिंट करती है। मैं इस मिल गया है:

tell application "iTerm" 
    set wins to id of every window 
end tell 

जो 6 पूर्णांकों प्रिंट: 3034, 2528, -1, -1, -1, -1

बोनस प्रश्न: चार -1 के क्या हैं?

तो मैं कोशिश:

tell application "System Events" 
    activate window 3034 
end tell 

जो करने पर केवल एक ही चीज़ हो रहा है कि मैं अपने वर्तमान टर्मिनल का ध्यान केंद्रित खो (जिसमें मैं इन आदेशों को टाइप कर रहा हूँ) है, कोई फर्क नहीं है कि क्या मैं के रूप में 3034 या 2528 निर्दिष्ट आईडी।

+2

देखें [पूछे जाने वाले प्रश्न पर यह प्रश्न] (http://apple.stackexchange.com/questions/39204/script-to-raise-a-single-window-to-the-front); यदि आप 'एप्लिकेशन को बताएं' के साथ कुछ विन्डो के 'एक्शनराइज' एएक्सराइज 'को जोड़ते हैं, तो एप्लिकेशन को सक्रिय करने के लिए, आप जो चाहते हैं उसे प्राप्त करेंगे। लेकिन चेतावनी (और कारण यह एक उत्तर नहीं है) यह है कि आप इस तरह से विंडो आईडी द्वारा विंडोज निर्दिष्ट नहीं कर सकते हैं (जो समझ में आता है, जैसे कि मैं सही ढंग से समझता हूं, विंडो आईडी एप्लिकेशन-विशिष्ट हैं)। बोनस प्रश्न: -1 एस शायद वरीयता/खोज संवाद जैसी चीजें हैं, जो भी दिखाई दे सकती हैं या नहीं भी हो सकती हैं। –

उत्तर

3

आपके पास लगभग है। आप "-1" खिड़की आईडी को फ़िल्टर कर सकते के रूप में ही दिखाई खिड़कियों को देखकर:

tell application "iTerm 2" 
    set wins to id of every window whose visible is true 
end tell 

मैं के परिणामों को देखकर यह पता लगा:

tell application "iTerm 2" to properties of every window 

मुझे लगता है कि देखा "- 1 "खिड़कियों संपत्ति visible:false

है तो फिर तुम बजाय सिस्टम घटनाओं के iTerm आवेदन करने के लिए सीधे खिड़की आईडी बता सकते हैं:

tell application "iTerm 2" 
    activate window 13195 
end tell 
+4

मेरी इच्छा है कि यह मेरे लिए काम करे, लेकिन इसके बजाय यह दिए गए आवेदन की अंतिम सक्रिय विंडो को सक्रिय करता है। –