Applescript 通过ID将应用程序带到前端

Applescript 通过ID将应用程序带到前端,applescript,Applescript,我想用AppleScript把一个应用程序带到前台。如果我运行以下脚本 tell application "System Events" tell process id 916 activate end tell end tell 这个过程并没有走到前面。相反,只有当前最前面的应用程序的活动窗口失去焦点,但该应用程序保持在前面 甚至可以用进程ID而不是应用程序名来实现这一点吗?我已经在MacOSX10.6.8和10.7.5上试过了 我正在寻找一个简单的AppleScript解决

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

tell application "System Events"
  tell process id 916
    activate
  end tell
end tell
这个过程并没有走到前面。相反,只有当前最前面的应用程序的活动窗口失去焦点,但该应用程序保持在前面

甚至可以用进程ID而不是应用程序名来实现这一点吗?我已经在MacOSX10.6.8和10.7.5上试过了

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

这将使用应用程序文件的路径,这显然是必需的(不仅仅是名称)。
我有另一个答案,它使用了
do shell脚本
;如果你愿意,我可以补充一下。

我找到了以下解决方案:

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
傅的答案也适用:

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

好吧,我给出了一个答案,但其中包括一个
do shell脚本
命令。我忘了看最后一部分。在这一点上,你真的应该考虑<代码> doshell脚本<代码>为“简单的Apple脚本”。但是我不想引起你的愤怒,所以我删除了我的答案。谢谢你的尝试。我有一个进程,可以运行多个实例,所有实例都具有相同的应用程序路径。因此,我认为这个解决方案行不通,但我会用它作为灵感。啊,是的,你应该提到多实例部分。这是至关重要的;你可能应该在你的问题中加上这个。我不确定重复循环是否真的有必要。我还没有接受我自己的答案,我会等待更多的建议。这是一个难题。可能以前也有人问过。不过,可能没有这样的限制。请尝试
告诉应用程序“系统事件”,将unix id为myProcessID的每个进程的最前端设置为true
Foo,您的答案非常有效。如果您将其作为单独的答案发布,我将接受。您还可以使用process的复数形式,
processs
,即
将unix id为myProcessID的最前面的进程设置为true
,或将第一个进程的
或某些进程的
设置为true
tell application "System Events"
    set frontmost of every process whose unix id is myProcessID to true
end tell