如何在OS X中获取当前前台应用程序的名称或PID?

10

我需要获取当前 OS X 操作系统的前台应用程序名称或 PID?如何使用终端获取?


可以通过 wmctrl 完成。 - Avinash Raj
它应该使用标准命令。我不想安装任何额外的库/命令等。 - Serge
可能涉及到AppleScript;你可能会在apple.stackexchange.com上获得更好的回复。 - chepner
1个回答

28
你可以使用“lsappinfo”命令从终端中获取此信息。手册详细介绍了此工具可以返回的大量信息。
为了获取最前面的应用程序,您可以使用front参数调用lsappinfo。
$ lsappinfo front
ASN:0x0-0x10010:

此命令返回唯一的应用程序标识符(ASN),启动服务使用该标识符来识别进程。您可以将其输入lsappinfo以获取有关该进程的更多详细信息。

$ lsappinfo info `lsappinfo front`
"Terminal" ASN:0x0-0x10010: (in front) 
    bundleID="com.apple.Terminal"
    bundle path="/Applications/Utilities/Terminal.app"
    executable path="/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal"
    pid = 652 type="Foreground" flavor=3 Version="326" fileType="APPL" creator="????" Arch=x86_64 
    parentASN="loginwindow" ASN:0x0-0x1001: 
    launch time =  2014/06/25 15:13:00 ( 8 days, 39 minutes, 25.0882 seconds ago )
    checkin time = 2014/06/25 15:13:00 ( 8 days, 39 minutes, 24.6907 seconds ago )
    launch to checkin time: 0.397498 seconds

info标志采用-only标志,仅返回特定字段。使用此功能,您可以查询PID、应用程序名称、应用程序包路径等。

$ lsappinfo info -only pid `lsappinfo front` 
"pid"=652

$ lsappinfo info -only name `lsappinfo front` 
"LSDisplayName"="Terminal"

$ lsappinfo info -only bundlepath `lsappinfo front` 
"LSBundlePath"="/Applications/Utilities/Terminal.app"

9
有没有苹果的API可以通过编程来获取这些信息? - Klaas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接