通过ID将应用程序带到前面

时间:2015-04-01 22:07:31

标签: applescript

我想使用AppleScript将应用程序带到前台。如果我运行以下脚本

tell application "System Events"
  tell process id 916
    activate
  end tell
end tell

这个过程并没有出现在前面。相反,只有当前最前面的应用程序的活动窗口失去焦点,但该应用程序停留在前面。

甚至可以使用进程ID而不是应用程序名称来执行此操作吗?我在Mac OS X 10.6.8和10.7.5上试过这个。

我正在寻找一个简单的AppleScript解决方案。它不应该使用任何shell命令或任何其他解决方案。我想使用进程ID号,因为我可能已运行同一应用程序的多个实例(在同一文件位置)。

2 个答案:

答案 0 :(得分:1)

我找到了以下解决方案:

tell application "System Events"
    set myProcesses to every process whose unix id is myPocessID
    repeat with myProcess in myProcesses
        set the frontmost of myProcess to true
    end repeat
end tell

Foo的答案也有效:

tell application "System Events"
    set frontmost of every process whose unix id is myProcessID to true
end tell

答案 1 :(得分:0)

set processID to 432--currently firefox for me
tell application "System Events" to set a to file of 1st item of (processes whose unix id = processID)
activate application (a as alias as string)

这使用app文件的路径,这显然是必要的(不仅仅是名称)。 我有另一个使用do shell script的答案;如果你愿意,我可以补充说。