एक स्क्रिप्ट में मैं एक विशिष्ट टैटी डिवाइस युक्त टर्मिनल.एप विंडो को खोजने की कोशिश कर रहा हूं और उस विंडो को ऊपर की ओर उठाता हूं। अब तक मेरे पास एप्सस्क्रिप्ट में क्या है:
tell application "System Events"
set foundWin to false
if (name of processes) contains "Terminal" then
tell application "Terminal"
set theTabs to first tab of every window where tty is "$(tty)"
repeat with theTab in theTabs
if class of theTab is tab then
set theWin to (first window whose tabs contains theTab)
set selected tab of theWin to theTab
set foundWin to true
end if
end repeat
end tell
end if
if foundWin then
--RAISE THE WINDOW?!
end if
end tell
जहां मैं फंस रहा हूं वह "खिड़की को ऊपर उठाने" वाला हिस्सा है।
यहाँ कुछ चीजें हैं जो काफी नहीं हैं जो मुझे चाहिए:
set frontmost of theWin to true
- यह विंडो को टर्मिनल.एप्प विंडो के समूह के सामने लाता है लेकिन इसे किसी अन्य विंडो के ऊपर नहीं बढ़ाता है।
tell application "Terminal" to activate
- यह हर टर्मिनल विंडो को एक बड़े स्टैक में सामने लाता है। मुझे सिर्फ एक खिड़की चाहिए।
tell application "System Events"
set theSysWin to first window of process "Terminal" whose name is (name of theWin)
perform action "AXRaise" of theSysWin
end tell
यह लगभग ऐसा करता है, लेकिन यह टर्मिनल विंडो को # 2 स्थिति में बढ़ाने के लिए है, फिर भी सक्रिय विंडो के नीचे है (यदि सक्रिय ऐप टर्मिनल के अलावा कुछ और है।)
click theSysWin at {10,50}
- कुछ भी करने के लिए प्रतीत नहीं होता है।
click first static text of theSysWin
- कुछ भी करने के लिए प्रतीत नहीं होता है।
क्या इसे करने का कोई तरीका है? इसे एप्सस्क्रिप्ट में नहीं होना चाहिए।
EDIT I ने इस वेब पेज ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) को एक ओब्ज-सी / कोको कॉल का हवाला देते हुए पाया:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
मैं या तो ObjC या कोको से परिचित नहीं हूं, और यह (अंततः) शेल स्क्रिप्ट से मंगवाया गया है, इसलिए यह सुनिश्चित नहीं है कि वहां से कहां जाना है।
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
मैं objc या कोको के साथ पर्याप्त रूप से परिचित नहीं हूँ हालांकि वहाँ से कहाँ जाना है।