2017-02-03 10 views
0

Я попытался использовать следующие AppleScript, чтобы получить PID s всех окон (включая сведенные к минимуму). Этот скрипт не получает окна PID s на других рабочих столах.Получить PID всех открытых окон на MacOS

Есть ли какое-либо обходное решение для этого, так что я все еще могу получить список открытых окон на всех рабочих столах без необходимости обрабатывать отдельные процессы и проверять, есть ли у них окна?

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. Возможно, это не самый эффективный способ сделать то, что я пытаюсь сделать.

ответ

0

Похоже, я получил эту работу с этой некрасивой bash - applescript взломать

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 процесса и так далее.