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 :

Si application lancée la passer au 1er plan


Sujet :

AppleScript

  1. #1
    Membre averti
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut Si application lancée la passer au 1er plan
    Bonjour je suis développeur web je me lance dans l'applescript pour un tout petit truk

    je cherche a SI l'application Firefox est lancée, ramené sa fenêtre au 1er plan (devant tout autre fenetre et autre application)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if application "Firefox" is running then
    	tell application "Firefox"
    		activate
    	end tell
    end if
    (je l'enregistre en passant par automator en tant que application : "Firefox +")

    le problème est que si firefox n'est pas lancé, au lieu de simplement mettre en avant la fenêtre de firefox, il lance l’application..

    je souhaite me servir de ce petit script pour creer une application qui si firefox n'est pas lancer il ouvre fasterfox qui lui optimise et lance firefox.
    Si firefox est déja lancé alors simplement ramener sa fenêtre au 1er plan puis quitter l'application Firefox + :


    [Firefox +] : http://bayimg.com/PaAAGaaFe
    1 : Si firefox est lancé dire a firefox de se mettre au 1er plan
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if application "Firefox" is running then
    	tell application "Firefox"
    		activate
    	end tell
    end if
    2 : Si firefox est lancé dire a firefox + de quitter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if application "Firefox" is running then
    	tell application "Firefox +"
    		quit
    	end tell
    end if
    3 : Lancement fe speedyfox

    4 : Cliquez sur le bouton speed up my firefox ! puis sur run firefox

    5 : quitter speedyfox

    Merci d'avance !!!!

  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 JibsouX,
    Voici le code pour demander au système si une application est ouverte (même si aucun document ouvert !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "System Events" to set Appli_Lancee to exists (processes where name is "Firefox")
    La variable Appli_Lancee est vraie si l'application est lancée...et fausse sinon, bien sûr !

    Attention à bien mettre le nom correct pour l'application. Par exemple, si ton application s'appelle "Firefox2" il faut bien mettre le nom exact avec le "2".

    Cordialement

  3. #3
    Membre averti
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut
    Bonsoir !
    merci pour la réponse je comprend la ligne de code mais je ne sais pas comment l'exploiter dans ce que je souhaite faire..

    si appli lancée la mettre au 1er plan

    ceci ne fait pas la meme chose que ce que tu m'a donné ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if application "Firefox" is running

  4. #4
    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
    bonjour JibsouX,
    les 2 instructions font presque la même chose, mais il y a une petite subtilité.
    Dans ta version :
    L'éditeur Applescript vérifie, lors de la compilation, l'existence de l'application Firefox. Pour ce faire, il ouvre l'application !
    Comme ta première instruction est équivalent à un tell application "Firefox", l'application s'ouvre.

    Dans ma version, il n'y a pas de Application "Firefox", donc le compilateur n'a pas à vérifier l'existence de l'application et l'interpréteur ne trouvera une instruction que si le if est positif.
    donc si Firefox n'est pas ouvert, il ne le sera pas.

    voici le code (si j'ai bien compris ce que tu veux faire si Firefox n'est pas lancé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tell application "System Events" to set Appli_Lancee to exists (processes where name is "Firefox")
    if Appli_Lancee then
    	tell application "Firefox" to activate
    else
    	tell application "Firefox +" to quit
    end if
    cordialement

  5. #5
    Membre averti
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut
    Bonjour !

    Ca a vraiment l'air detre bon mais ca ne fonctionne pas

    pour test j'ai fait : si firefox déja lancé 'activate' sinon 'dialog'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tell application "System Events" to set Appli_Lancee to exists (processes where name is "Firefox")
    if Appli_Lancee then
    	tell application "Firefox" to activate
    else
    	display dialog "firefox is not open"
    end if
    mais ca me lance firefox...

    voici l'appli : (automator app)
    http://www.multiupload.nl/CPA7ZO7TSS


    Le but final du coup serai si cela fonctionne .. :
    http://bayimg.com/faaoEaAFe

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Bonjour à tous

    Sur les traces des propositions de PBell, voici une autre piste possible pour le code AppleScript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    -- On me le nom des deux applications dans des variables, ceci évite qu'elles soient lancées dès la compilation du code
    set Nom_Appli_Activate to "Firefox"
    set Nom_Appli_Quit to "Firefox +"
     
    -- On liste ensuite le nom de toutes les applications qui ne tournent pas en tâche de fond
    tell application "System Events" to set Noms_Applis to name of every application process whose background only is false
     
    -- Si le nom de l'une des applis figure dans la liste de noms, alors on lance l'action correspondante
    if (Nom_Appli_Activate is in Noms_Applis) then tell application Nom_Appli_Activate to activate
    if (Nom_Appli_Quit is in Noms_Applis) then tell application Nom_Appli_Quit to quit

  7. #7
    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,
    Le problème vient du fait que Automator , lors du lancement de l'application contenant le script, effectue une re-compilation du script !
    Cette recompilation trouve l'instruction "tell application "Firefox"... qui ouvre Firefox.

    En empruntant l'idée de FredoMkb, j'ai mis en variable le nom Firefox et cela fonctionne dans Automator avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set FF to "Firefox"
    tell application "System Events" to set Appli_Lancee to exists (processes where name is FF)
    if Appli_Lancee then
    	tell application FF to activate
    else
    	display dialog "firefox is not open" buttons {"OK"}
    end if
    Il faudra employer aussi une variable pour l'application Firefox+ que tu veux quitter.

    Merci qui ? Merci FredoMkb !

    Cordialement

  8. #8
    Membre averti
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut
    Super nice !!!

    Ça fonctionne je comprend maintenant merci pour l'explication !

    du coup maintenant le script en ai a ca :

    mise en variable des différente appli
    si firefox est lancé : le passé au 1er plan et quitter firefox +
    sinon ouvrir SpeedyFox

    Clique sur les différents boutons de l'appli speedyfox

    quit speedyfox et firefox +

    http://bayimg.com/mAAHgaafg

    maintenan je cherche a creer l'action (clik sur les bouton de speedyfox) en applescript j'ai commencer mais cela me renvoi un erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "System Events" to tell process "SpeedyFox" to click button "Speed Up My firefox!" of window 1
    Erreur dans System Events*: Il est impossible d’obtenir window 1 of process "SpeedyFox". Index non valable.

    pareil si je fait simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "System Events" to tell process "SpeedyFox" to click button "Speed Up My firefox!"

  9. #9
    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 JibsouX,

    Sache que les fenêtres ont un ID qui ressemble fortement à un nombre aléatoire. Window 1 n'est pas certain de fonctionner, en particulier si tu n'as pas mis l'application concernée en "activate".
    donc essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tell application "System Events" 
    tell application "SpeedyFox" 
    activate
    click button "Speed Up My firefox!" of window 1
    end tell
    end tell

    Il est possible de contourner le numéro en utilisant l'instruction "front window" qui te donnera celle qui est au premier plan dans l'application qui est activé (c'est pratiquement toujours l'équivalent de Window 1).

    Ensuite, tu devras aborder le même type de question pour les boutons et autres éléments d'interface. Pour ce faire, le plus rapide est encore d'effectuer des scripts de tests avec des Get buttons, get drawers, get groups,... pour chaque type de UI élément.
    Pour trouver les UI éléments possibles -> Editeur de script -> bibliothèque -> System Events -> Process suite

    Enfin, j'ajoute que piloter un script via les UI éléments doit être considéré en dernier recours seulement.
    En effet, si une version ultérieure de Firefox change le nom du bouton, ton script ne fonctionnera plus !

    Cordialement

  10. #10
    Membre averti
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Par défaut
    Merci pour ta reponse !

    je vais tout de meme essayer car cela m'intéresse

    mais tu a effectivement raison sur le fait que si il y a une nouvelle version les bouton peuvent changer donc je fait surement garder au final mon observation d'action de automator

    Merci beaucoup pour tout l'aide surtout que c'est la 1ere fois que je tripatouille ApleScript

    !!

Discussions similaires

  1. [Débutant] Comment faire passer une fenêtre d'application active au 1er plan
    Par guillaume.niel dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/12/2012, 23h28
  2. [OpenOffice][Tableur] [Basic] Passer une feuille Calc en 1er plan
    Par Quid45 dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 14/04/2008, 17h25
  3. Réponses: 2
    Dernier message: 24/05/2007, 13h39
  4. Spash screen et fenêtre de l'application au 1er plan
    Par kurul1 dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/03/2007, 19h31

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