В скрипте я пытаюсь найти окно Terminal.app, содержащее определенное устройство tty, и поднять это окно до самого верха. Вот что у меня есть в Applescript до сих пор:
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
- это приводит окно к передней части группы окон Terminal.app, но не поднимает его над другими окнами.
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, все еще под активным окном (если активное приложение - это что-то отличное от Terminal.app.)
click theSysWin at {10,50}
- кажется, ничего не делает.
click first static text of theSysWin
- кажется, ничего не делает.
Есть ли способ сделать это? Это не должно быть в Applescript.
РЕДАКТИРОВАТЬ Я нашел эту веб-страницу ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) со ссылкой на вызов Obj-C / Cocoa:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Я не знаком ни с ObjC, ни с Cocoa, и это (в конечном счете) вызывается из сценария оболочки, поэтому не уверен, куда идти дальше.
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
я недостаточно знаком с objc или cocoa чтобы знать, куда идти оттуда, хотя.