IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [AS] Action en quittant, Est-ce possible ?
Options
lynnrag
posté 12 Apr 2008, 09:46
Message #1


Adepte de Macbidouille
*

Groupe : Membres
Messages : 74
Inscrit : 6 Jul 2006
Membre no 64 021



Bonjour à tous,

Je voudrais pouvoir afficher une petit fenêtre avec écrit "au revoir" lorsque mon application AS quitte. Dans le style :

CODE

en quittant
tell application "Finder"
display dialog "au revoir"
end tell
end en quittant


Je pensais que la commande on quit me le permettrait, mais apparemment cela ne fonctionne pas sad.gif

Auriez-vous une idée ?

Merci d'avance smile.gif
Go to the top of the page
 
+Quote Post
sucellus
posté 12 Apr 2008, 10:26
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



CITATION(lynnrag @ 12 Apr 2008, 10:46) [snapback]2632070[/snapback]

Bonjour à tous,

Je voudrais pouvoir afficher une petit fenêtre avec écrit "au revoir" lorsque mon application AS quitte. Dans le style :

CODE

en quittant
tell application "Finder"
display dialog "au revoir"
end tell
end en quittant


Je pensais que la commande on quit me le permettrait, mais apparemment cela ne fonctionne pas sad.gif

Auriez-vous une idée ?

Merci d'avance smile.gif

Bonjour

CODE
display dialog "Au revoir" buttons {"OK"} default button 1 with icon 0 giving up after 15 with title "Je quitte"


buttons {"OK"} default button 1 = pour une temporisation et que le bouton soit sélectionné pour pouvoir utiliser la touche Return
with icon 0 = Pour affichage d'une icône
giving up after 15 = Après 15 secondes je quitte
with title "Je quitte" = Titre de la fenêtre.

PS: Après le bouton c'est des options donc non obligatoires.
si la fenêtre d'alerte ne s'affiche pas a certain moment tu la fait précéder par:
CODE
tell me to activate

comme ça tu est sur quelle soit sélectionné et en premier plan.

@+

Ce message a été modifié par sucellus - 12 Apr 2008, 11:00.


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
lynnrag
posté 12 Apr 2008, 14:28
Message #3


Adepte de Macbidouille
*

Groupe : Membres
Messages : 74
Inscrit : 6 Jul 2006
Membre no 64 021



Bonjour sucellus,

Merci pour ton aide, mais cette fenêtre va t-elle apparaitre au moment où je vais quitter mon application ?
Go to the top of the page
 
+Quote Post
sucellus
posté 12 Apr 2008, 15:10
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



CITATION(lynnrag @ 12 Apr 2008, 15:28) [snapback]2632345[/snapback]

Bonjour sucellus,

Merci pour ton aide, mais cette fenêtre va t-elle apparaitre au moment où je vais quitter mon application ?

Si c'est une application AppleScript ou une application qui gère les AppleScripts aucun problème.

Mais pour pouvoir te répondre il faut savoir quelle est l'application?

@+

Ce message a été modifié par sucellus - 12 Apr 2008, 15:11.


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
lynnrag
posté 12 Apr 2008, 15:57
Message #5


Adepte de Macbidouille
*

Groupe : Membres
Messages : 74
Inscrit : 6 Jul 2006
Membre no 64 021



Oui, c'est bien une application applescript.

Cette application se trouvera dans un .dmg

Or, je voudrais éjecter le .dmg après que l'application ait quitté ... mais à chaque fois, l'éjection est refusée car l'application n'a pas encore quitté lorsque l'ordre d'éjecter est donné.

Donc il faudrait que l'éjection se fasse une fois l'application quittée.
Go to the top of the page
 
+Quote Post
sucellus
posté 12 Apr 2008, 17:09
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



CITATION(lynnrag @ 12 Apr 2008, 16:57) [snapback]2632410[/snapback]

Oui, c'est bien une application applescript.

Cette application se trouvera dans un .dmg

Or, je voudrais éjecter le .dmg après que l'application ait quitté ... mais à chaque fois, l'éjection est refusée car l'application n'a pas encore quitté lorsque l'ordre d'éjecter est donné.

Donc il faudrait que l'éjection se fasse une fois l'application quittée.

La je connaît pas, démonter un DMG c'est bon mais commandé par un script se trouvant dans celui-ci.
Tu auras toujours le problème que le script est quitté pour faire le démontage.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
Guest_JackJr300_*
posté 13 Apr 2008, 00:20
Message #7





Guests






Bonjour,

CITATION(lynnrag @ 12 Apr 2008, 15:57) [snapback]2632410[/snapback]

Cette application se trouvera dans un .dmg

Or, je voudrais éjecter le .dmg après que l'application ait quitté ... mais à chaque fois, l'éjection est refusée car l'application n'a pas encore quitté lorsque l'ordre d'éjecter est donné.


Il suffit de mettre ce code à la fin de ton script, la commande dans le do shell script s'exécuterera en arrière plan, il attendra que ton application quitte, après il éjectera le DMG.
CODE
tell application "Finder" to tell file (path to me) to set {this_Volume, app_name} to {POSIX path of (get its disk as text), name}
if app_name ends with ".app" then set app_name to text 1 thru -5 of app_name

set the_IDentifier to do shell script "/usr/bin/hdiutil info | /usr/bin/grep '" & text 1 thru -2 of this_Volume & "'$ | /usr/bin/sed 's/\t.*//'"
if the_IDentifier is not "" then
    do shell script "/bin/sh -c '/usr/bin/osascript <<EOT
tell application \"System Events\" to repeat while exists process \"" & app_name & "\"
    delay 2
end repeat
EOT
sleep 1
/usr/bin/hdiutil unmount  \"" & the_IDentifier & "\" -force '   > /dev/null 2>&1 &"
end if


La commande hdiutil fonctionne seulement pour les images disque. wink.gif

Ce message a été modifié par JackJr300 - 13 Apr 2008, 00:21.
Go to the top of the page
 
+Quote Post
sucellus
posté 13 Apr 2008, 06:20
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



CITATION(JackJr300 @ 13 Apr 2008, 01:20) [snapback]2632779[/snapback]


Il suffit de mettre ce code à la fin de ton script, la commande dans le do shell script s'exécuterera en arrière plan, il attendra que ton application quitte, après il éjectera le DMG.

Bonjour

L'éjection marche parfaitement avec des images disques Test.dmg ou Test.sparseimage. smile.gif

Mais si je veut éliminer les fichiers images de disques qui sont créé que pour tester, la corbeille me répond:

Impossible d'effectuer l'opération : l'élément "Test.dmg" est utilisé.
Impossible d'effectuer l'opération : l'élément "Test.sparseimage" est utilisé. sad.gif

Donc je vide la corbeille en mode terminal.

@+

Ce message a été modifié par sucellus - 13 Apr 2008, 10:13.


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
lynnrag
posté 13 Apr 2008, 10:07
Message #9


Adepte de Macbidouille
*

Groupe : Membres
Messages : 74
Inscrit : 6 Jul 2006
Membre no 64 021



J'ai pu trouver quelque chose d'intéressant ce matin.

En partant sur la piste de JackJr300, si je crée un .term avec le code suivant :

CODE

osascript -e 'eject disk "monDmg"


Que je place ce .term dans monDmg,

et que je lance le .term,

chez moi ça marche, le.dmg est éjecté smile.gif, car apparemment les actions lancées par osascript sont indépendantes du contenu du dmg.

Ce message a été modifié par lynnrag - 13 Apr 2008, 10:08.
Go to the top of the page
 
+Quote Post
sucellus
posté 13 Apr 2008, 10:27
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



CITATION(lynnrag @ 13 Apr 2008, 11:07) [snapback]2632906[/snapback]

J'ai pu trouver quelque chose d'intéressant ce matin.

En partant sur la piste de JackJr300, si je crée un .term avec le code suivant :

CODE

osascript -e 'eject disk "monDmg"


Que je place ce .term dans monDmg,

et que je lance le .term,

chez moi ça marche, le.dmg est éjecté smile.gif, car apparemment les actions lancées par osascript sont indépendantes du contenu du dmg.

Bonjour

Je suis pas spécialiste du terminal alors la .term tu pourrais indiquer exactement ce que tu as fait, pour un novice comme moi tenter de comprendre.

Comment créer un .term et lancer ce dernier?

Merci

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
lynnrag
posté 13 Apr 2008, 14:24
Message #11


Adepte de Macbidouille
*

Groupe : Membres
Messages : 74
Inscrit : 6 Jul 2006
Membre no 64 021



Alors écoute, je ne suis pas expert non plus ... voilà comment j'ai fait.

Je te conseille d'utiliser Tiger plutôt que Leopard, car c'est plus compliqué avec ce dernier.

Tu lances Terminal, et tu vas dans Fichier -> Enregistrer Sous.

Là, tu nommes ton futur .term, tu le mets où tu veux, et surtout tu coches "Exécuter cette commande (spécifier le chemin complet). Dans le champ qui n'est plus grisé, tu tapes la (les) commandes que devra éxécuter Terminal. Par exemple :
CODE

osascript -e 'eject disk "monDmg"'


Tu vas te retrouver avec un .term, sur lequel tu double-clique pour que le Terminal fasse ce qu'on lui a dit de faire.
Le plus chouette la-dedans (enfin j'espère que ça marche vraiment, et que je n'ai pas fait d'erreurs), c'est aue si tu mets ce .term dans monDmg, et que tu l'éxécutes dedans, monDmg s'éjecte bien.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 20th April 2024 - 00:27