首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用给定的进程ID激活Mac OS X应用程序?

如何使用给定的进程ID激活Mac OS X应用程序?
EN

Stack Overflow用户
提问于 2010-02-19 22:04:42
回答 1查看 9.4K关注 0票数 17

我知道Mac OS X中应用程序的进程id。我如何切换到它(使用applescript、python或其他什么)?

所谓“切换”,我的意思是,聚焦。

通常的解决方案是使用applescript代码tell application "Foo" activate,但这里的名称没有什么用处,因为我正在运行同一个应用程序的许多实例。但是,我能够获得应用程序的进程id。

如何以编程方式切换到此应用程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-08 22:04:55

如果你不想/不能安装任何额外的软件,有一种内置的查找进程in和应用程序的方法: ps。

ps是一个有用的命令行工具,用于查找有关正在运行的进程的信息。要查找给定进程编号的特定应用程序(我已将其分配给变量myProcessId):

代码语言:javascript
复制
do shell script "ps -p " & myProcessId

这将返回如下结果

代码语言:javascript
复制
  PID TTY           TIME CMD
66766 ??         9:17.66 /Applications/Firefox.app/Contents/MacOS/firefox-bin -psn_0_3793822

要将结果限制为相关行,可以将其通过管道传递给grep,如下所示

代码语言:javascript
复制
do shell script "ps -p " & myProcessId & "|grep " & myProcessId

通过解析答案,您可以找到应用程序的名称。这可能有点棘手,因为结果将显示应用程序使用的实际命令,而不是应用程序名称(如果您查看示例,您将看到可以通过在结果中查找something.app来找到它)。

编辑-对不起,我误解了问题。

你可以用系统事件来做这件事(事实证明,这比摆弄shell要容易得多):

代码语言:javascript
复制
tell application "System Events"
    set theprocs to every process whose unix id is myProcessId
    repeat with proc in theprocs
        set the frontmost of proc to true
    end repeat
end tell
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2296812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档