在脚本中,我试图找到包含特定tty设备的Terminal.app窗口,并将该窗口提升到顶部。到目前为止,这是我在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都不熟悉,(最终)这是从shell脚本中调用的,因此不确定从那里去哪里。
SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
我对objc或cocoa不够熟悉知道从那里去哪里。