2011-09-08 2 views
9

मैं एक ऐप्पलस्क्रिप्ट लिखने की कोशिश कर रहा हूं जो मैक के लिए ट्विटर के कैश को खाली कर देगा और फिर ऐप को पुनरारंभ करेगा। जिस समस्या में मैं चल रहा हूं वह यह है कि पुष्टिकरण संवाद में कोई नाम नहीं है (शीर्षक बार खाली है) इसलिए मैं खो गया हूं कि मैं बिना किसी संदर्भ के बटन को कैसे लक्षित करता हूं। यहाँ मैं अब तक है:ऐप्पलस्क्रिप्ट का उपयोग करना मैं उस विंडो के अंदर एक संवाद में एक बटन कैसे क्लिक करूं जिसमें नाम/शीर्षक नहीं है?

tell application "Twitter" 
    activate 
end tell 
tell application "System Events" 
    tell process "Twitter" 
     tell menu bar 1 
     tell menu bar item "Twitter" 
      tell menu "Twitter" 
       click menu item "Empty Cache" 
      end tell 
     end tell 
     end tell 
    end tell 
end tell 
tell application "System Events" 
    click button "Empty Cache" of window "Empty Cache?" 
end tell 
tell application "Twitter" 
    quit 
end tell 
tell application "Twitter" 
    activate 
end tell 
+1

आप विंडो के शीर्षक निर्दिष्ट करने के लिए (हालांकि यह यदि आप बेहतर है) नहीं है; आप विंडो 1' – fireshadow52

+1

के 'क्लिक बटन "खाली कैश" पर क्लिक कर सकते हैं यदि आप चाहें तो' फ्रंट विंडो 'के भी आप कर सकते हैं। – fireshadow52

उत्तर

7

वहाँ वस्तु पदानुक्रम के भीतर वस्तुओं का उल्लेख करने के कई तरीके हैं:। नाम सिर्फ एक ही रास्ता (AppleScript Language Guide: Reference Forms देखना आपकी स्क्रिप्ट पहले से ही अन्य तरीकों में से एक का उपयोग करता है:। Index

tell menu bar 1 

अपने सूचकांक द्वारा मेनू पट्टी की चर्चा करते हुए यह है कि:। (विपरीत कई प्रोग्रामिंग भाषाओं में, AppleScript में एक सूची में आइटम्स 1 बल्कि 0 से से शुरू इंडेक्स किए गए) नीचे स्क्रिप्ट को पूरा करना चाहिए कि आप क्या चाहते:

tell application "Twitter" to activate 

tell application "System Events" 
    tell application process "Twitter" 
     click menu item "Empty Cache" of menu "Twitter" of menu bar item "Twitter" of menu bar 1 
     delay 1 
     --click button "Empty Cache" of front window 
     click button "Empty Cache" of window 1 
    end tell 
end tell 

tell application "Twitter" 
    quit 
    delay 1 
    activate 
end tell 

आप शायद delay 1 लाइनों पर टिप्पणी कर सकते हैं; मैंने प्रक्रिया को धीमा करने के लिए उनको जोड़ा ताकि आप आसानी से देख सकें कि क्या हो रहा है।

ऐप्पलस्क्रिप्ट के माध्यम से किसी एप्लिकेशन में किसी ऑब्जेक्ट को "प्राप्त करने" के बारे में जानने का प्रयास करते समय, मुझे ऐप के बारे में अधिक जानकारी खोजने के लिए छोटी क्वेरी स्क्रिप्ट बनाने के लिए अक्सर ऐप्पलस्क्रिप्ट संपादक का उपयोग करना उपयोगी लगता है। उदाहरण के लिए, ट्विटर में, मैंने खाली कैश विंडो लाने के लिए ट्विटर> खाली कैश चुना। मैं तो निम्न स्क्रिप्ट भाग गया:

tell application "Twitter" 
    set theWindows to every window -- get a list of windows 
    (* turns out there's only one window listed, 
     so get the first item in the list *) 
    set theWindow to first item of theWindows 
    -- get the properties of the window 
    properties of theWindow 
end tell 

यह स्क्रिप्ट निम्न परिणाम लौटे:

{closeable:true, zoomed:false, class:window, index:1, 
    visible:true, name:missing value, miniaturizable:true, 
id:28551, miniaturized:false, resizable:true, 
bounds:{-618, 76, -128, 756}, zoomable:true} 
संबंधित मुद्दे