获取MacOS上所有打开窗口的PID

时间:2017-02-03 06:34:37

标签: macos applescript macos-sierra osascript

我尝试使用以下AppleScript来获取所有窗口的PID(包括最小化的窗口)。此脚本无法在其他桌面上获取PID个窗口。

有没有解决方法,所以我仍然可以获得所有桌面上打开的窗口列表,而无需activate个别进程并检查它们是否有窗口?

tell application "System Events"
    repeat with proc in (every process)
        if exists(first window of proc) then
            set pid to unix id of proc
            log pid
        end if
    end repeat
end tell

PS,我对AppleScript不太熟练。我已经设法使用StackOverflow一起破解了这个问题。这可能不是我尝试做的最有效的方式。

1 个答案:

答案 0 :(得分:0)

看起来我让这个丑陋bash - applescript hack

osascript -e "tell application \"System Events\" 
    repeat with proc in (processes where background only is false)
        set pname to name of proc
        log pname
    end repeat
end tell" 2>&1 |
while read line
do
    echo "process " $line
    pgrep $line
done

这会打印类似

的内容
process  Finder
818
process  Google Chrome
3730
3734
3740
5838
process  iTerm2
3750
4210
process  Sublime Text
3822

PID 818属于Finder进程的位置,等等。