Trong một kịch bản, tôi đang cố gắng tìm cửa sổ Terminal.app chứa một thiết bị tty cụ thể và nâng cửa sổ đó lên trên cùng. Đây là những gì tôi có trong Applescript cho đến nay:
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
Nơi tôi đang bị mắc kẹt là phần "nâng cao cửa sổ".
Đây là một số thứ không hoàn toàn như tôi muốn:
set frontmost of theWin to true
- điều này đưa cửa sổ ra phía trước nhóm các cửa sổ Terminal.app nhưng không nâng nó lên trên bất kỳ cửa sổ nào khác.
tell application "Terminal" to activate
- điều này đưa mọi cửa sổ Terminal lên phía trước trong một ngăn xếp lớn. Tôi chỉ muốn một cửa sổ.
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
Điều này gần như làm điều đó, nhưng những gì nó làm là nâng cửa sổ đầu cuối lên vị trí số 2, vẫn ở bên dưới cửa sổ hoạt động (nếu ứng dụng đang hoạt động là thứ gì đó không phải là Terminal.app.)
click theSysWin at {10,50}
- dường như không làm gì cả.
click first static text of theSysWin
- dường như không làm gì cả.
Có cách nào để làm việc này không? Nó không phải là trong Applescript.
EDIT Tôi đã tìm thấy trang web này ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) trích dẫn một cuộc gọi Obj-C / Ca cao:
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Tôi không quen thuộc với ObjC hoặc Ca cao, và điều này (cuối cùng) được gọi từ một kịch bản shell, vì vậy không chắc chắn sẽ đi đâu từ đó.
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
Tôi không đủ quen thuộc với objc hoặc ca cao để biết nơi để đi từ đó mặc dù.