Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[AppleScript] Fermeture des applications

36 réponses
Avatar
michel.vauquois
Bonjour,

Peut-on, avec un script AppleScript, provoquer la fermeture de toutes
les applications autres que le Finder (ou même : y compris le Finder) ?

Merci d'avance.

--
Michel Vauquois
Que Dieu vous garde... Moi j'ai pas le temps (RD)

10 réponses

1 2 3 4
Avatar
josephb
MV wrote:

Marche pas non plus... Où se trouve talagent me demande l'Éditeur
AppleScript.




Aucune idée de ce qu'est ce "talagent"
Chez moi ce dernier script roule impec.
C'est bien le pb avec AppleScript, les trucs qui marchent sur une
version OS ne vont plus avec la suivante.

Le script proposée par Patrick S., est probablement plus en accord avec
ton 10.8, en plus d'être "smart"...


--
J. B.
Avatar
michel.vauquois
Joseph B wrote:

Aucune idée de ce qu'est ce "talagent"



C'est un exécutable Unix situé dans Système / Biblio / CoreServices.
Mais même quand on ignore ce truc, il y a d'autres processus dont
l'Éditeur AppleScript demande la localisation.

Le script proposée par Patrick S., est probablement plus en accord avec
ton 10.8, en plus d'être "smart"...



Ce n'est pas parfait, mais ça me suffit.

Merci
--
Michel Vauquois
Que Dieu vous garde... Moi j'ai pas le temps (RD)
Avatar
michel.vauquois
Patrick Stadelmann wrote:

Un truc du genre :



Ça fonctionne avec presque tout.
J'ai modifié le script à cause d'OpenOffice (= soffice que ne trouve pas
le script) :

tell application "OpenOffice"
quit
end tell
tell application "System Events"
set appList to name of every application process ¬
whose visible is true and name is not "Finder" and name is not ¬
"soffice"
end tell
repeat with cApp in appList
quit application cApp
end repeat

--
Michel Vauquois
Que Dieu vous garde... Moi j'ai pas le temps (RD)
Avatar
josephb
MV wrote:

> Le script proposée par Patrick S., est probablement plus en accord avec
> ton 10.8, en plus d'être "smart"...

Ce n'est pas parfait, mais ça me suffit.



Attention, les applications chargées après "Script Editor" restent
ouvertes.
Ce n'est peut-être pas ton cas de figure, mais si oui faire en sorte
que "Script Editor" soit le dernier appellé à quitter, à la manière de
la deuxième mouture que j'avais proposée, par exemple comme ceci :

*********************
tell me
set ScrEdit to name of me -- Script Editor
end tell

tell application "System Events"
set appList to name of every application process ¬
whose visible is true and name is not "Finder"
end tell
repeat with cApp in appList
if cApp as string is not ScrEdit then
quit application cApp
end if
end repeat

tell me
quit
end tell
*********************

A toi de rajouter ce qui règle le cas d'OpenOffice
Cordialement,

--
J. B.
Avatar
Patrick Stadelmann
In article <1l8ziz9.7o0vizi01o7aN%,
(MV) wrote:

Joseph B wrote:

> Aucune idée de ce qu'est ce "talagent"

C'est un exécutable Unix situé dans Système / Biblio / CoreServices.



C'est lui qui gère le mécanisme de l'OS qui lui permet de quitter et
relancer les applications de manière transparente pour l'utilisateur,
afin d'optimiser l'usage des ressources. Pas une bonne idée d'essayer de
le quitter à mon avis, raison pour laquelle j'ai exclu les applications
invisible (tâche de fond) dans mon script. Ca évite également de quitter
les démons d'indexation, le Dock, ... Ainsi le script devrait se limiter
aux applications prévues pour être normalement quittées par
l'utilisateur.

Patrick
--
Patrick Stadelmann
Avatar
Patrick Stadelmann
In article <1l8zj5h.142yzsb1m4zruoN%,
(MV) wrote:

Patrick Stadelmann wrote:

> Un truc du genre :

Ça fonctionne avec presque tout.
J'ai modifié le script à cause d'OpenOffice (= soffice que ne trouve pas
le script) :



Oui, le script ne fonctionnera pas si le nom de l'application diffère de
celui de l'exécutable, comme c'est souvent le cas avec les applications
portées d'autres plateformes.

L'utilisation de l'identifier à la place devrait corriger le problème :

tell application "System Events"
set appList to bundle identifier of every application process ¬
whose visible is true and name is not "Finder"
end tell
repeat with cApp in appList
quit application id cApp
end repeat

Patrick
--
Patrick Stadelmann
Avatar
g4fleurot
Patrick Stadelmann wrote:

C'est lui qui gère le mécanisme de l'OS qui lui permet de quitter et
relancer les applications de manière transparente pour l'utilisateur,
afin d'optimiser l'usage des ressources. Pas une bonne idée d'essayer de
le quitter à mon avis, raison pour laquelle j'ai exclu les applications
invisible (tâche de fond) dans mon script. Ca évite également de quitter
les démons d'indexation, le Dock, ... Ainsi le script devrait se limiter
aux applications prévues pour être normalement quittées par
l'utilisateur.



Pour avoir un bureau propre, lorsque je clique sur une application dans
le dock, j'appuie en même temps sur les touches option et commande, ce
qui équivaut à afficher l'application et masquer les autres.
Le script en l'état ne me ferme que l'application apparente et pas
celles qui sont masquées.
Pour que ça fonctionne sur l'ensemble des applications du dock, j'ai
rajouté en début de script :

tell application "System Events" to tell process "Finder"
click menu item "Tout afficher" of menu 2 of menu bar 1
end tell

Mais n'y aurait-il pas plus simple ?

--
Gérard FLEUROT plus un
Avatar
Patrick Stadelmann
In article <1l8zqiq.1d923m0toj2tcN%,
(Fleuger) wrote:

Patrick Stadelmann wrote:

> C'est lui qui gère le mécanisme de l'OS qui lui permet de quitter et
> relancer les applications de manière transparente pour l'utilisateur,
> afin d'optimiser l'usage des ressources. Pas une bonne idée d'essayer de
> le quitter à mon avis, raison pour laquelle j'ai exclu les applications
> invisible (tâche de fond) dans mon script. Ca évite également de quitter
> les démons d'indexation, le Dock, ... Ainsi le script devrait se limiter
> aux applications prévues pour être normalement quittées par
> l'utilisateur.

Pour avoir un bureau propre, lorsque je clique sur une application dans
le dock, j'appuie en même temps sur les touches option et commande, ce
qui équivaut à afficher l'application et masquer les autres.
Le script en l'état ne me ferme que l'application apparente et pas
celles qui sont masquées.



Aïe ! Effectivement, ça n'est pas le critère de visibilité qui doit être
pris en compte, il faut éliminer les applications qui ne PEUVENT pas
être visible, i.e. celle qui ont la propriété "background only" vraie.

Script corrigé :

tell application "System Events"
set appList to bundle identifier of every application process ¬
whose background only is false and name is not "Finder"
end tell
repeat with cApp in appList
quit application id cApp
end repeat

Patrick
--
Patrick Stadelmann
Avatar
michel.vauquois
Patrick Stadelmann wrote:

tell application "System Events"
set appList to bundle identifier of every application process ¬
whose visible is true and name is not "Finder"
end tell
repeat with cApp in appList
quit application id cApp
end repeat



Une merveille ! ;-)
Merci beaucoup !
--
Michel Vauquois
Que Dieu vous garde... Moi j'ai pas le temps (RD)
Avatar
g4fleurot
Patrick Stadelmann wrote:

Aïe ! Effectivement, ça n'est pas le critère de visibilité qui doit être
pris en compte, il faut éliminer les applications qui ne PEUVENT pas
être visible, i.e. celle qui ont la propriété "background only" vraie.



Le critère "visible" est mieux que "background only" car ce dernier
demande la fermeture de nombreux com.apple.xxx lancés par launchd dans
la session utilisateur.

--
Gérard FLEUROT plus un
1 2 3 4