Forcer à quitter une app. avec applescript

Salut ceslinstinct, est-ce que je dois rentrer le code que tu me propose de façon intégrale?
Bonsoir

Sur les 2 lignes de code tu donne le nom complet de l'application à fermer, c'est tout et tu teste directement dans l'éditeur de script.

Si ça marche pas, alors il faut contrôler le nom exact de l'application.

exemple:

J'ouvre OpenOffice.org Write, dans le Dock il m'affiche l'icône OpenOffice.org et si je cherche le nom de l'application ouverte il m'affiche la fenêtre m'indiquant qu'il ne trouve pas Soffice.bin.

@+
 
J'ai utilisé ce script pour fermer Microsoft Word et ça ne fonctionne pas j'ai le message d'erreur (voir pièce jointe) Voir la pièce jointe 72392
Merci!
Bonjour

Si le nom de l'application est "Microsoft Word" dans le Dock, donne nous ce que tu trouve comme réponse dans la boite de dialogue.

Bloc de code:
tell application "System Events" to set {tIds, tnames} to {bundle identifier, name} of (application process "Microsoft Word")

display dialog "Bundle identifier = " & tIds & return & "Nom = " & tnames as string

@+
 
Si le nom de l'application est "Microsoft Word" dans le Dock, donne nous ce que tu trouve comme réponse dans la boite de dialogue.
Toutes les versions (v.X, 2004, 2008 et 2011) donnent exactement le même résultat :
- Bundle identifier = com.microsoft.Word
- Nom = Microsoft Word

Mais, même en rajoutant la ligne do shell script "killall '" & tnames & "'" à la suite des deux lignes en question, dans le cas de Word 2004 ça plante après la boîte de dialogue en affichant le message d'erreur "No matching processes belonging to you were found" (pourtant, dans le Moniteur d'activité, Word apparaît bien dans la liste "Mes opérations"). Avec Word 2011 ça fonctionne comme prévu, bien sûr.

Note : j'ai rajouté les simples quote autour du nom, sinon, ça ne fonctionne pas non plus avec Word 2011, pour les raisons déjà évoquées plus haut...

Par contre, ça m'aura permis de comprendre pour Firefox, dont le nom est "Firefox-bin" (j'avais essayé "Firefox.app" mais je n'aurais jamais pensé à "Firefox-bin" !) Même chose (évidemment) pour Thunderbird avec "Thunderbird-bin"...
 
Dernière édition:
Bon, Word 2004 est une appli qui n'est pas sous la forme "Paquet". Pour les autres, celles qui acceptent de quitter avec l'instruction killall, ce sont bien des paquets et le nom qu'il faut utiliser est celui qui est dans le sous-dossier "Mac OS" du paquet.

Suite des test et vérifications : on a aussi le cas d'AppleWorks qui est bien en "Paquet" mais qui refuse de quitter quand même. Serait-ce un effet Carbon vs Cocoa, alors ?
 
Bon, Word 2004 est une appli qui n'est pas sous la forme "Paquet". Pour les autres, celles qui acceptent de quitter avec l'instruction killall, ce sont bien des paquets et le nom qu'il faut utiliser est celui qui est dans le sous-dossier "Mac OS" du paquet.

Suite des test et vérifications : on a aussi le cas d'AppleWorks qui est bien en "Paquet" mais qui refuse de quitter quand même. Serait-ce un effet Carbon vs Cocoa, alors ?
Bonsoir

Et si a la place d'utiliser le nom de l'application (qui arrive d'être bidon), on utilise le pid de cette dernière?

Je suis nul en commande du terminal, alors j'ai cherché sur Google et j'ai trouvé des lignes qui assemblées me permettent de quitter Firefox.

Testé avec Firefox, vue que je ne l'utilise pas et en plus qui utilise 2 noms (Firefox.app dans le Dock, et Firefox-bin en lecture du nom avec AppleScript).

le code:
Bloc de code:
[color=#0000FF]tell[/color] [color=#0080FF]application[/color] [color=#800000]"[/color]System Events[color=#800000]"[/color]
	[color=#0000FF]set[/color] [color=#3F7F00]appname[/color] [color=#0000FF]to[/color] [color=#800000]"[/color]Firefox[color=#800000]"[/color]
	[color=#0000FF]set[/color] [color=#3F7F00]the_process[/color] [color=#0000FF]to[/color] [color=#0000FF]the[/color] [color=#0080FF]process[/color] [color=#3F7F00]appname[/color]
	[color=#0000FF]set[/color] [color=#3F7F00]pid[/color] [color=#0000FF]to[/color] [color=#0000FF]the[/color] [color=#0080FF]unix id[/color] [color=#0000FF]of[/color] [color=#3F7F00]the_process[/color]
[color=#0000FF]end[/color] [color=#0000FF]tell[/color]
[color=#0000FF]if[/color] [color=#3F7F00]pid[/color] [color=#0000FF]is[/color] [color=#0000FF]not[/color] [color=#800000]""[/color] [color=#0000FF]then[/color] [color=#0080FF]do shell script[/color] [color=#800000]("[/color]kill -9 [color=#800000]"[/color] [color=#800000]&[/color] [color=#3F7F00]pid[/color][color=#800000])[/color]

Code à vérifier avant utilisation, car testé seulement avec Léopard 10.5.8

Donc garantie jusqu'a la première lecture de ce code sur le bon fonctionnement, et non sur le premier essais.

Critiques acceptées.

@+
 
Dernière édition:
Bonjour

Merci à caramelle22

Cette question m'a permis de gérer mon code de gestion des daemons, que je quitte à la demande si nécessaire rapidement.

Marche très bien avec Léopard 10.5.8, à tester avec Lion pour savoir si ça fonctionne le code cité dans le post précédent.

@+
 
Merci Celestinc, ça fonctionne avec 4D par contre il faut que j'utilise le nom inscrit dans le moniteur d'activité et non celui indiqué dans le Doc.
Vous êtes vraiment une communauté avec beaucoup de ressources. Merci à tous. :):up:
 
Merci Celestinc, ça fonctionne avec 4D par contre il faut que j'utilise le nom inscrit dans le moniteur d'activité et non celui indiqué dans le Doc.
Vous êtes vraiment une communauté avec beaucoup de ressources. Merci à tous. :):up:
Bonjour

Ca ne marche pas avec tous les noms traduit en Français dans le Dock, mais il arrive qu'un command I donne directement le nom original en Anglais de l'application.

Content que ça fonctionne.

@+
 
  • J’aime
Réactions: Cratès