IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

login item avec variable [AppleScript]


Sujet :

AppleScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut login item avec variable
    Bonjour à tous !

    Voilà mon petit problème, je veux faire un petit script qui permet de mettre des applications dans les logins item d'une session.
    Tout se passe bien sauf quand dans le champs "name" de mon system Events je met le nom de la variable qui contient le nom de l'application.


    display dialog " Ce programme vous permet de faire démarrer des applications au démarrage d'OS X, voulez vous continuez ?" default answer "oui"
    set resp to the text returned of the result



    display dialog "L'application que vous souhaitez lancer au démarrage se trouve t-elle dans le dossier Applications ? " default answer "oui"
    set parentdir to the text returned of the result


    display dialog "Entrer le nom de votre application en respectant la case : " default answer ""
    set appli to the text returned of the result
    set appname to appli & ".app"
    display dialog "Nom de l'application : " & appname
    set completePath to "/Applications/" & appname
    set defaultPath to "/Applications/"

    tell application "System Events"
    make new login item at end of login items with properties {name:"&appname", path:"&defaultPath", hidden:false}
    end tell



    make new login item at end of login items with properties {name:"&appname", path:"&defaultPath", hidden:false} --> Sur cette ligne, si je remplace "&appname" par un nom d'application du genre "Contacts.app" ca marche direct.
    Dans le débogguer, quand je met "&appname", il me sort : "login item "&appname" of application "System Events" " et rien ne se passe au niveau des logins items.
    Quelqu'un sait pourquoi la variable &appname n'est pas prise en compte ?

    Merci :-)
    Images attachées Images attachées  

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonsoir,
    Tout d'abord quelques commentaires sur ton script : (si je puis me permettre !)

    Il semble fastidieux de demander à l'utilisateur de saisir le nom d'une application (avec les risques d'erreur). Pourquoi ne pas lui demander simplement de choisir dans une liste ? Cela évitera toute erreur.
    Par ailleurs, tes 2 premières lignes de dialogue demandent à l'utilisateur de confirmer qu'il veut continuer.
    L'interface Mac par défaut doit utiliser les boutons OK ou Annuler (cela rend le Mac très homogène en interface). En plus, le bouton Annuler interrompt directement le script, donc autant s'en servir. Nul besoin de mémoriser la réponse dans la variable Resp.

    Enfin, d'un point de vue fonctionnel, le path du login item doit être le chemin Unix (donc avec des "/" et pas des ":") et cela en partant du dossier racine du disque, et y compris l'application elle-même. Donc un path correct devrait être "/Applications/Nom_Appli.app" et pas seulement "/Applications/"

    En tenant compte de ses remarques voici un premier script qui fonctionne en demandant à l'utilisateur de sélectionner une application (par défaut dans le dossier Application) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    display dialog "Ce programme vous permet de faire démarrer des applications au démarrage d'OS X, voulez vous continuez ?" default button "OK"
    set Mon_App to choose file of type {"app"} with prompt "Sélectionner l'application à ajouter" default location (path to applications folder)
    
    tell application "Finder"
        set App_Name to displayed name of Mon_App
        set App_Path to (POSIX path of Mon_App) as string
        set App_Path to text 1 thru ((length of App_Path) - 1) of App_Path
    end tell
    tell application "System Events" to make new login item at end of login items with properties {name:App_Name, path:App_Path, hidden:false, kind:"Application"}
    note : la ligne 8 est une astuce car une application est un dossier et pas un fichier. Sans cela, on aurai dans App_Path une valeur "/Applications/toto.app/" (le "/" à la fin est de trop !)

    En allant un peu plus loin, on peut imaginer que l'utilisateur veut ajouter plusieurs applications d'un coup. Dans ce cas, il suffit d'autoriser la sélection multiple (avec la touche commande) et de traiter chaque élément sélectionné dans une boucle repeat. le script ci-dessous fait exactement cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    display dialog "Ce programme vous permet de faire démarrer des applications au démarrage d'OS X, voulez vous continuez ?" default button "OK"
    set App_List to choose file of type {"app"} with prompt "Sélectionner les applications à ajouter" default location (path to applications folder) with multiple selections allowed
    
    repeat with Mon_App in App_List
        tell application "Finder"
           set App_Name to displayed name of Mon_App
            set App_Path to (POSIX path of Mon_App) as string
            set App_Path to text 1 thru ((length of App_Path) - 1) of App_Path
        end tell
        tell application "System Events" to make new login item at end of login items with properties {name:App_Name, path:App_Path, hidden:false, kind:"Application"}
    
    end repeat

    Bien sûr ces 2 scripts sont testés et fonctionnent.

    Cordialement

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Résolu
    Merci beaucoup pour vos 2 scripts en effet c'est beaucoup plus clair et mieux de faire sélectionner l'application mais je ne savais pas comment faire (je viens de débuter)

    Problème résolu :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Merge avec variables
    Par kluh dans le forum Oracle
    Réponses: 18
    Dernier message: 25/07/2005, 14h31
  2. [AS2] Pb avec variables dans syntaxe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/07/2005, 11h28
  3. Réponses: 3
    Dernier message: 10/02/2005, 17h02
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo