2013-08-22 24 views
7

Domanda newbie per Applescript di nuovo :) Sto cercando di creare un piccolo appleScript che mi consenta di selezionare più elementi da un elenco di applicazioni attualmente in esecuzione e quindi di uscire da quelle app selezionate. Qualcosa di simile funziona, ma piuttosto che dover fare clic su ciascuna finestra di dialogo, sarebbe molto più semplice scegliere da una lista.Applescript ottiene l'elenco delle app in esecuzione?

tell application "System Events" 
repeat with p in every process 
    if background only of p is false then 
     display dialog "Would you like to quit " & name of p & "?" as string 
    end if 
end repeat 
end tell 

Qualsiasi e tutti gli aiuti sarebbero molto apprezzati!

Grazie!

risposta

11

Prova questo:

tell application "System Events" 
    set listOfProcesses to (name of every process where background only is false) 
    tell me to set selectedProcesses to choose from list listOfProcesses with multiple selections allowed 
end tell 
--The variable `selectedProcesses` will contain the list of selected items. 
repeat with processName in selectedProcesses 
    do shell script "Killall " & quoted form of processName 
end repeat 
+0

funziona come un fascino !!! La mia ultima domanda è: come faresti senza il comando killall? Un po 'come, dire all'applicazione selectedProcesses per uscire. Grazie! – user2555399

+0

Vedere la parte inferiore dello script di Parag sopra. – user2555399

+0

Modificato aggiungendo la parte di script di Parag. –

1

si può provare questo

tell application "System Events" 
     set AppName to name of every process whose background only is false 
     choose from list AppName OK button name "Ok" cancel button name "Cancel" 
    end 
5
tell application "System Events" 
    set processList to get the name of every process whose background only is false 
    set processNameList to choose from list processList with prompt "Select process to quit" with multiple selections allowed 
    if the result is not false then 
     repeat with processName in processNameList 
      do shell script "Killall " & quoted form of processName 
     end repeat 
    end if 
end tell 

enter image description here

+0

La parte superiore dello script non ha funzionato per me, ma la parte inferiore ha funzionato! Grazie! – user2555399

+0

Hai qualche errore? –

1

& (name of every process whose (name is "AppName") possono essere aggiunti al Michele Percich's e Parag Bafna's soluzioni per includere specifiche applicazioni barra dei menu per nome .

tell application processName to quit può essere utilizzato al posto di do shell script "Killall " & quoted form of processName.

tell application "System Events" 
    set processList to ¬ 
     (name of every process where background only is false) & ¬ 
     (name of every process whose ¬ 
      (name is "AppName") or ¬ 
      (name is "AnotherAppName")) 
    tell me to set selectedProcesses to choose from list processList with prompt "Select process(es) to quit:" with multiple selections allowed 
end tell 
if the result is not false then 
    repeat with processName in selectedProcesses 
     tell application processName to quit 
    end repeat 
end if 
2

è possibile utilizzare questo script, che è molto più semplice

tell application "Finder" 
    get the name of every process whose visible is true 
end tell