creer lanceur (complexe?) via automator ou autre

Link1993

Membre actif
Club iGen
28 Septembre 2008
402
39
Paris, Munich
Bonjour, alors voila, Je cherche un moyen via automator, apple script ou xcode (de prefference Xcode x) ) pour faire un lanceur avec exception. Je m'explique :

Voila, je voudrais que cette application (par exemple itunes) souvre si et seulement s'il n'est pas deja ouver. Sinon, dans ce cas, il doit se fermer.

Tout ceci, je vend ensuite l'associer a une touche de mon disque durs ou du clavier (apres, sur ce point, ca doit pas trop etre compliquer, je me debrouillerai ensuite.)


Merci d'avance :)
 
Bonjour,

C'est très simple à faire en AppleScript :
Bloc de code:
tell application "iTunes"
	if running then
		quit
		my waitUntilQuit()
	end if
	activate
end tell

on waitUntilQuit()
	tell application "System Events" to repeat while exists process "iTunes"
		delay 3
	end repeat
end waitUntilQuit

xcode (de prefference Xcode x) ) pour faire un lanceur avec exception
Xcode je connais, mais c'est quoi Xcode x ?
 
Bonjour, alors voila, Je cherche un moyen via automator, apple script ou xcode (de prefference Xcode x) ) pour faire un lanceur avec exception. Je m'explique :

Voila, je voudrais que cette application (par exemple itunes) souvre si et seulement s'il n'est pas deja ouver. Sinon, dans ce cas, il doit se fermer.

Tout ceci, je vend ensuite l'associer a une touche de mon disque durs ou du clavier (apres, sur ce point, ca doit pas trop etre compliquer, je me debrouillerai ensuite.)


Merci d'avance :)
Bonjour

Si c'est seulement pour quitter si ouvert où ouvrir si fermé, je verrais bien ce code.

Bloc de code:
tell application "iTunes"
	if running then
		quit
		return
	end if
	activate
end tell

@+
 
bon, reponse rapide pour dire que je n'avais pas recu de message pour les reponses :s dsl du retard, vais lire tout ca de ce pas :D


Bon, finalement, tout dabors merci de vos reaction :)
Mais... Ca se complique finalement... : je voulais utiliser cela avec Time Machine, et utiliser ce script en tant que raccourci boutton qui est sur mon disque dur. Bon, apres avoir essayer les deux, le premier, ne le demarre pas, quand au 2°, il ne demarre pas non plus (mais finalement, ca me parait logique, vu qu'il est plutot codé pour fermer, enfin, je dis ca par rapport au peux que j'y connais :siffle:, donc du coup, il reste en boucle ... :mouais:


Sinon, histoire de donner mon grain de sel, je suis aussi en train de faire un script pour demarrer Itunes au demarage SI mon disque dur est detecter, sinon, il oublie.
Ma tentative aura ete vain, puisqu'il ne detecte rien, et qu'il me mets toujours false ....

Voila mon code tell application "Finder"

if not (exists folder "iTunes Media" in "/Volumes/Jules GLASOW's External Macintosh HD/Musique") then
tell application "iTunes" to quit
else
tell application "iTunes" to run
end if
end tell

J'ai tenter pas mal de chose, la j'en suis a ma derniere tentative... par exemple j'avais tenter avec IF ............. exists then, mais marchait pas non plus.... et je ne trouvais rien pour remplacer quit (a la place, j'aurai bien aimer trouver un truc du genre "do nothing" ou je ne sais quoi :hein: )


Voila, bon, c'est mes debut dans le codage, bon, j'avoue que je me debrouille tres bien sur les calculatrice TI 83+ ;) mais, c'est autre chose aussi, le systeme est a peu pres pareil, mais il y a une liste de toute les commandes, comme "if", "then", "stop", "end".... et meme "output" et "input" ainsi que "menu" (histoire de raconter ma vie ;p ) !!! donc voila, soyez pas mechant s'il vous plait :p

Bon, en parlant de TI, juste une question par curiositer, comment on fait pour obtenir un LBL (qui permet d'acceder directement a ce LBL sur ces TI, c'est en quelque sorte, un marque page)
D'ailleur, Ca existe ? :confused:
 
Ton problème est le chemin "/Volumes/Jules GLASOW's External Macintosh HD/Musique", c'est un posix path.

Bonjour,

Le Finder accepte les (HFS path, Finder item ou alias path).
Exemple d'un HFS path --> folder "Jules GLASOW's External Macintosh HD:Musique:" : au lieu de /
Exemple d'un Finder item --> folder "Musique" of disk "Jules GLASOW's External Macintosh HD"
Exemple d'un alias path --> alias "Jules GLASOW's External Macintosh HD:Musique:"

Voici le script, aucun besoin du Finder.
Bloc de code:
try
	(POSIX file "/Volumes/Jules GLASOW's External Macintosh HD/Musique") as alias
	launch application "iTunes"
on error -- erreur si "/../External Macintosh HD/Musique" n'existe pas
	quit application "iTunes"
end try

Pour "Time Machine", est-ce que c'est l'application ou la sauvegarde que tu veux lancer ?

Pour l'application, c'est comme ceci.
Bloc de code:
ignoring application responses
	activate application "Time Machine"
end ignoring
 
Pour le chemin, en fait, je ne m'etais pas embeter : copy/paste as alias ;) c'est tout.
Bon, je vais m'essayer ca de ce pat

---------- Nouveau message ajouté à 17h51 ---------- Le message précédent a été envoyé à 17h10 ----------

les mecs.... Vous etes geniaux :D

Bon, pour time machine... ca n'as pas trop l'air de marcher (effectivement, c'est pour y entrer)
Mais, ce que j'ai remarquer avec les scripts, c'est qu'il ne peuvents pas devenur des "executable" (ou alors j'ai pas trouver :confused: ) : Quand j'ai tester le truc pour time machine depuis la fenetre d'edition, tout marche. Des qu'on l'enregistre en application, il reste ouvert, et rien ne se passe, et si on l'enregistre en script, ba, il ouvre la fenetre d'edition sans s'executer... Enfin, si je l'enregistre en executable seulement en tant que script, ba, il me dit, pas modifiable, et c'est tout :mouais:

bon, enfin, passe a l'action pour l'explication des commande :rateau: (ba, meme si ca marche, je veux comprend le pourquoi du comment, vu que je commence :rolleyes: )

Bloc de code:
try
	(POSIX file "/Volumes/Jules GLASOW's External Macintosh HD/Musique") as alias
	launch application "iTunes"
on error -- erreur si "/../External Macintosh HD/Musique" n'existe pas
	quit application "iTunes"
end try

pourquoi try ? je comprend pas a quoi corespond cette comande (pour moi, de traduction, ca veux dire, essai, donc, pourquoi pas remplacer par run par exemple ? :confused: )

enfin, Posix ? qu'est ce que c'est ??:confused: en plus, dans ton exemple, tu utilise alias avec : et non / comme dans la commande :s... une erreur ? :p

Enfin, je n'ai rien du tout compris le finder items, comment il fonctionne dès qu'il y a des sous dossier ...
Mais, la fonction qui me parrait le plus clair, est le HFS path. Histoire de bien faire ch--- mon ptit' monde, pourrai tu faire un ptit exemple avec son fonctionnement s'il te plait ? :p

Enfin, pour time machine :

Bloc de code:
ignoring application responses
	activate application "Time Machine"
end ignoring
Je ne vois pas a quoi pourrai encors une fois representer ignoring application respons :s et la dedans, je ne vois pas la commande pour fermer time machine une fois ouvert ....

Bon, dans tout les cas, merci pour tout, mais, tres franchement, merci pour le temps quevous passer pour moi :zen: :zen:, nempeche, tout ceci me donne bien envie de faire du code applescript, mais, j'avais beau chercher, j'ai pas trouver de tutot simple, et correcte sans tomber dans un truc du genre, modifier le format image grace a une action de dossier (que je m'en fou, ca me sert a rien pour le moment en tout cas :D ), donc si vous conaiser quelque site ou autre, je suis partant :)


ps : J'avoue que pour commencer, je me suis aider du menu aide de applescript, il y avait toute les commandes et infos, mais je n'en connais pas asser pour les utiliser ^^ et j'ai pas trouver tout ce qui etait commande telle que IF, THEN, ou autre :mouais:
 
Quand j'ai tester le truc pour time machine depuis la fenetre d'edition, tout marche. Des qu'on l'enregistre en application, il reste ouvert, et rien ne se passe, et si on l'enregistre en script, ba, il ouvre la fenetre d'edition sans s'executer... Enfin, si je l'enregistre en executable seulement en tant que script, ba, il me dit, pas modifiable, et c'est tout :mouais:
Bonjour

Si ton code compilé en application ne marche pas, teste de le lancer depuis le Dock, comme ça à l'ouverture il ne se prend pas en compte.

Si ça marche, il suffit d'ajouter une commande à l'ouverture de l'application pour qu'elle ne soit pas prise en compte.

@+
 
try : c'est pour qu'il ignore les erreurs
on peut gérer les erreurs en mettant*"on error" dans le bloc try

(POSIX file "/Volumes/Jules GLASOW's External Macintosh HD/Musique") as alias

"POSIX file" convertit le chemin Unix au format file HFS path , as alias convertit file HFS path en alias

Le finder item avec des sous dossier : ça donne un long chemin inversé
Ex: application file "rawdataTest1.app" of folder "Release" of folder "build" of folder "rawdataTest1 - copie" of folder "Documents" of folder "jack" of folder "Users" of startup disk

Le HFS path est un texte dont les noms de dossier sont séparées par un :
Si on l'utilise dans le Finder il faut spécifier le type ( disk, folder, file, document file, alias file, application file ou item (item fonctionne sur tous les types) )

l'alias est le plus pratique (aucun besoin du Finder et fonctionne dans toutes les applications).

ignoring application responses : c'est pour éviter l'erreur, un try aurait fait l'affaire aussi.

Pour ouvrir Time Machine sans erreur
Bloc de code:
do shell script "'/Applications/Time Machine.app/Contents/MacOS/Time Machine'"

Essayer de fermer Time Machine une fois ouvert avec une commande AppleScript est impossible, car il ne répond pas au commande.
On peut le faire dans un do shell script avec un mot de passe administrateur, car c'est un processus système, mais c'est très dangereux de le quitter, s’il restaure des éléments.
 
Merci pour tout :)
Bon, dommage pour time machin, mais c'est pas grave de toute facon, je m'arrenge :p

Mais, sinon, si jamais je voulais le faire pour une autre application (itunes par exemple ;) ) , Je mettrait un truc du genre :

Bloc de code:
try
run "iTunes"
if running quit "itunes"
end try

j'ai bien piger ?? :D

Par contre, pour transformer un script en executable, c'est quoi la technique precise ? :confused:


Bon, par contre, le system de notification sur mac gé est vraiment nullissime (ou alors, j'ai toujours pas compris comment ca marche :mouais: ) Pourtant, le systeme du forum est comme sur xda dev, et la, pour moi ca marche .... bon, je vais voir ca.
 
Merci pour tout :)
Mais, sinon, si jamais je voulais le faire pour une autre application (itunes par exemple ;) ) , Je mettrait un truc du genre :

Bloc de code:
try
run "iTunes"
if running quit "itunes"
end try

j'ai bien piger ?? :D
Les applications standard ne donnent pas d'erreur.
Pour quitter si iTunes est lancé, c'est comme ceci
Bloc de code:
tell application "iTunes" to if running then quit
Important : running est une propriété qui fonctionne à partir de Mac OS X 10.5
Si tu as Mac OS X 10.4 c'est une autre commande


Par contre, pour transformer un script en executable, c'est quoi la technique precise ?.
Dans la zone de dialogue "Enregistrer" :
Choisissez "Application" si vous êtes sur Snow Leopard, "Progiciel" sur Leopard ou moins, dans le menu local Format de fichier.

Les options :

Décoches cette case
"Exécutable uniquement" : enregistre l'application sous un format non modifiable.

Décoches cette case
"Écran de démarrage" : affiche, à l'exécution du script, une zone de dialogue contenant le texte du champ Description du script. La zone de dialogue contient aussi des boutons Exécuter et Quitter pour permettre à l'utilisateur d'arrêter ou de continuer l'exécution du script.

Décoches cette case
"Rester en arrière-plan" : laisse l'application active jusqu'à ce que vous la quittiez.

Un double clic sur l'application exécutera le script.



Pour exécuter un script au format Script (.scpt):
Enregistre-le dans le dossier /Maison/Bibliothèque/Scripts/
Sélectionne ton script à partir du menu Scripts de la barre de menu, et le script s'exécutera.

Voir l'aide Mac --> AppleScript : pour activer ce menu
 
Les applications standard ne donnent pas d'erreur.
Pour quitter si iTunes est lancé, c'est comme ceci
Bloc de code:
tell application "iTunes" to if running then quit

heu... Ca serai pas plutot
Bloc de code:
tell application "iTunes" to run
if running then quit

??? parce que a part si tout a coup on perd la logique de l'anglais, "to if".... non ?

Et si je demander de faire demarrer iTunes en masquer on fait comment du coup ? en cherchant, je trouve que pour masquer toute les fenetre, sauf programme en court

d'ailleur, je comprend pas a quoi reprensente appl et pourquoi il demande de rendre les fichier visible ...

Bloc de code:
set the visible of every application process whose ¬
			(file type is "APPL" and visible is not false) to false

En fait, j'ai ptet comprispourquoi il cherche a les rendre visible :rolleyes: mais comprend toujours pas le APPL



Enfin, pour le truc pour le transformer en executable, ça march ! :) j'étais tout le temps en train de faire seulement executable, et demarrer en arriere plan ... :hein:
 
heu... Ca serai pas plutot
Bloc de code:
tell application "iTunes" to run
if running then quit
Non, tell application "iTunes" to run -- lance l'appli
if running then quit -- cette ligne ne fera rien

il faut spécifier une application avec running
EX:
Bloc de code:
if running of application "iTunes" then
	quit application "iTunes"
end if
Bloc de code:
if application "iTunes" is running then
	tell application "iTunes" to quit
end if
Bloc de code:
tell application "iTunes"
	if running then -- running est dans le bloc --> tell application "iTunes"
		quit
	end if
end tell
Pour lancer iTunes masqué
Bloc de code:
launch application "iTunes"

Pour masqué iTunes s'il est visible
Bloc de code:
tell application "System Events" to set the visible of process "iTunes" to false

file type : c'est pour ceux qui sont sur Mac OS X 10.5 ou moins, c'est un code de 4 caractères que contenaient les fichiers, ils étaient différents selon leurs extensions et selon l'application qui créa le fichier, le file type des applications était APPL
Cela n'existe plus sur Snow Leopard .
 
oki doc'

Ba, merci pour tout, j'ai pu de question maintenant ;)

nempeche, dire que finalement c'est tout stupide le systeme de fonctionnement ^^' (quand on voit ca evidement)