(Je poste cette réponse séparément car elle est trop longue pour tenir dans un commentaire)
Crédit à @MatthieuRiegler pour le script original.
Cela a fonctionné sous 10.12.6 et est une modification mineure du script original (j'ai vu le commentaire de @CharlieGorichanaz après avoir fait mes propres recherches) :
set textToSearchForInProcessName to "Not Responding"
-- Run Activity Monitor
tell application "Activity Monitor" to activate
tell application "System Events" to tell process "Activity Monitor"
-- Wait for the Activity Monitor window to open
repeat until (exists window 1)
delay 1
end repeat
--display notification "Window appeared"
-- Wait for the Menubar to be present
repeat until (exists menu 1 of menu bar item "View" of menu bar 1)
delay 1
end repeat
--display notification "Menubar appeared"
-- Make sure View -> My Processes is selected
click menu item "My Processes" of menu 1 of menu bar item "View" of menu bar 1
-- Click the 'CPU View' button ( **1 )
click radio button 1 of radio group 1 ¬
of group 2 of toolbar 1 ¬
of window 1
-- Working with the list of processes
tell outline 1 of scroll area 1 of window 1
-- Looking for Not responding process
set notResponding to rows whose value of ¬
first static text contains textToSearchForInProcessName
repeat with aProcess in notResponding
-- For each non responding process retrieve the PID
set pid to value of text field 1 of aProcess -- ( **2 )
-- Kill that process using pid
if pid is not "" then do shell script ("kill -9 " & pid)
end repeat
end tell
end tell
**1 Dans macOS 10.12.x, la barre d'outils contient une fonction supplémentaire grâce à laquelle l'ensemble des boutons (CPU, Mémoire, Energie, etc.) sont en cours d'affichage. group 2 of toolbar 1
au lieu de group 1 of toolbar 1
. En l'absence de cette icône (je n'ai pas confirmé dans les versions plus anciennes de macOS), je pense que les boutons CPU etc. seraient en group 1 of toolbar 1
**2 Cela s'applique si vous avez déjà fait glisser la colonne PID dans la colonne Activité vers une position différente. J'avais fait glisser la colonne PID vers la position la plus à gauche, donc sur cette ligne, je devais changer l'index en 1
:
set pid to value of text field 1 of aProcess
Les colonnes sont numérotées de la plus à gauche, en commençant par 1. Ajustez donc l'indice en surbrillance dans la ligne ci-dessus en conséquence si nécessaire.