[R] Exécuter un programme lorsque j'en lance un autre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Utilisateur 2008 supprimé
Status : Hors ligne

[R] Exécuter un programme lorsque j'en lance un autre

#1

Message par Utilisateur 2008 supprimé »

Bonjour à tous,

J'aurais besoin d'un script qui quand je lance par exemple un jeu, il me lance un logiciel qui me permet d'y jouer à la manette.

En gros il faudrait que quand je lance un programme, il me lance un autre programme en même temps.

Je sais que pour certains ce script peut paraître simple à faire mais pour moi qui n'y connait pas grand chose c'est assez difficile.

Merci d'avance. :D

Edit : J'avais essayé ça mais ça ne correspond pas vraiment à ce que je voudrais faire.

Code : Tout sélectionner

if run("C:\Program Files\XBMC\XBMC.exe") Then
Run("C:\Documents and Settings\PimOoze\Bureau\xpadder_gamepad_profiler\Xpadder.exe")
EndIf
Modifié en dernier par Utilisateur 2008 supprimé le jeu. 22 oct. 2009 18:02, modifié 3 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#2

Message par timmalos »

Ce genre de script doit tourner en permanence sur ta machine.

En gros, une boucle infinie, tu sleep, et tu check si un process (celui qui t'interesse existe)

Code : Tout sélectionner

While 1
 Sleep(1000)
 If ProcessExist("explorer.exe") then
    Run("iexplore.exe")
    While  ProcessExist("explorer.exe")
      Sleep(500)
    WEnd
 EndIf

WEnd

Sinon le plus simple serait de remplacer le programme.

En gros, si tu veux faire qu'à chaque lancement de Internet Explorer tu lance firefox aussi (exemple)
Tu va dans le dossier D'Internet Explorer et tu renomme iexplore en iexplore2
tu creer un fichier .exe que tu renomme en iexplore.exe.

Tu rentre dedans

Code : Tout sélectionner

 Run("iexplore2.exe")
 Run("firefox.exe")
Et le tour est joué.
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#3

Message par Utilisateur 2008 supprimé »

Merci de ta réponse rapide.

Je vais tester tout ça. :wink:

Edit : Parfait c'est exactement ce que je voulais.

Je me suis servi de ton premier code. Par contre tu avais oublié de mettre des "s" à ProcessExists :mrgreen:

Merci encore. :D
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#4

Message par Utilisateur 2008 supprimé »

Autre petite question.

Comment je pourrais faire pour que quand je quitte le premier programme, l'autre programme s'arrête.
J'ai essayé de reprendre le même code en changeant quelques trucs mais ça ne fonctionne pas.

Code : Tout sélectionner

While 1
 Sleep(1000)
 If ProcessClose("XBMC.exe") then
    exit("C:\Documents and Settings\PimOoze\Bureau\xpadder_gamepad_profiler\Xpadder.exe")
    While  ProcessClose("XBMC.exe")
      Sleep(500)
    WEnd
 EndIf

WEnd
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#5

Message par Iste »

Code : Tout sélectionner

While 1
    Sleep(1000)
    If ProcessExists("explorer.exe") Then
        Run("iexplore.exe")
        While ProcessExists("explorer.exe")
            Sleep(500)
        WEnd
        ProcessClose("iexplore.exe") ;Ici , fermer le second programme
    EndIf
WEnd
Le code de timmalos est bien pensé, car tant que le 1er programme est lancé, le script ne cherche plus a ouvrir le second.
Il reste bloqué dans une "mini boucle", a la sorti de celle ci, cest donc que le 1er programme est fermé, on ferme donc aussi l'autre
Signez ici
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre  

#6

Message par Utilisateur 2008 supprimé »

Parfait ça marche très bien.

Merci beaucoup à vous deux pour votre efficacité et votre rapidité. :D
Modifié en dernier par Utilisateur 2008 supprimé le lun. 31 août 2009 21:25, modifié 1 fois.
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#7

Message par Utilisateur 2008 supprimé »

J'ai encore besoin de votre lumière :D

Si je veux partir sur le même principe de, quand je lance un programme, il m'en exécute un autre mais que je veux répéter l'opération plusieurs fois pour d'autres logiciels, est-ce qu'il est possible de tout mettre dans le même script ou alors je dois créer un script pour chaque ensemble de 2 logiciels?

Je sais pas si c'est assez clair.

Je poste un code faux qui vous donnera une idée sur ce que je souhaiterais faire :

Code : Tout sélectionner

;Script pour XBMC

While 1
    Sleep(1000)
    If ProcessExists("XBMC.exe") Then
        ShellExecute("C:\Documents and Settings\PimOoze\Bureau\xpadder_gamepad_profiler\XBMC.xpadderprofile")
        While ProcessExists("XBMC.exe")
            Sleep(500)
        WEnd
        ProcessClose("Xpadder.exe")
    EndIf
WEnd


;Script pour Mirror's Edge

While 2
    Sleep(1000)
    If ProcessExists("MirrorsEdge.exe") Then
        ShellExecute("C:\Documents and Settings\PimOoze\Bureau\xpadder_gamepad_profiler\Mirror's Edge.xpadderprofile")
        While ProcessExists("MirrorsEdge.exe")
            Sleep(500)
        WEnd
    EndIf
WEnd
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] Exécuter un programme lorsque j'en lance un autre

#8

Message par Iste »

hum.... Moui, c'est surement possible avec un seul, mais honnêtement, je pense que le plus simple, c'est de lancer plusieurs script !
Pas forcément d'en créer plusieurs, je m'exemple

Code : Tout sélectionner

;On écrit le 1er script
$script = "While 1" & @CRLF _
&"  Sleep(1000)" & @CRLF _
&'  If ProcessExists("explorer.exe") Then' & @CRLF _
&'      Run("iexplore.exe")' & @CRLF _
&'      While ProcessExists("explorer.exe")' & @CRLF _
&"          Sleep(500)" & @CRLF _
&"      WEnd" & @CRLF _
&'      ProcessClose("iexplore.exe")' & @CRLF _
&"  EndIf" & @CRLF _
&"WEnd"

;et on le lance !
If FileExists(@TempDir & "\script1") Then FileDelete(@TempDir & "\script1")
FileWrite(@TempDir & "\script1",$script)
Run(@AutoItExe & ' /AutoIt3ExecuteScript '& @TempDir & "\script1")

;on écrit le second
$script = "While 1" & @CRLF _
&"  Sleep(1000)" & @CRLF _
&'  If ProcessExists("autre.exe") Then' & @CRLF _
&'      Run("iautre.exe")' & @CRLF _
&'      While ProcessExists("autre.exe")' & @CRLF _
&"          Sleep(500)" & @CRLF _
&"      WEnd" & @CRLF _
&'      ProcessClose("iautre.exe")' & @CRLF _
&"  EndIf" & @CRLF _
&"WEnd"

;et on le lance aussi !
If FileExists(@TempDir & "\script2") Then FileDelete(@TempDir & "\script2")
FileWrite(@TempDir & "\script2",$script)
Run(@AutoItExe & ' /AutoIt3ExecuteScript '& @TempDir & "\script2")
Ceci devrait créer automatiquement d'autre script indépendant. C'est peut etre pas la meilleur solution, mais ca évite de lancer des script un a un. Pis c'est tellement plus simple ! :D
Signez ici
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#9

Message par Utilisateur 2008 supprimé »

Encore une fois merci. :mrgreen:

Mais avec cette méthode, est-ce qu'il y a moyen de fermer par exemple le script 2 sans fermer le script 1 et vice versa une fois que j'ai quitté un programme.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] Exécuter un programme lorsque j'en lance un autre

#10

Message par Iste »

Le programme ci dessus se lance, lance les autres, et se ferme. Apres les différent process vont tourner de manière indépendantes (tu véras d'ailleur plein d'icone autoit dans la barre des taches si tu le laisse comme ca :D)
Par contre, pas moyen de les différencier dans le gestionnaire des taches :s, il faudra donc penser a une façon de les gérer mieux
Signez ici
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#11

Message par Utilisateur 2008 supprimé »

C'est encore moi :mrgreen:

Voilà, je me sers beaucoup de ce script et avec cette technique, j'ai beaucoup trop d'icônes dans mon systray...

Je voulais savoir s'il était possible de tout mettre dans un même script au lieu de m'ouvrir plusieurs scripts à chaque fois.

Merci d'avance. :wink:
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#12

Message par pop45 »

PimOoze a écrit :J'ai encore besoin de votre lumière :D

Si je veux partir sur le même principe de, quand je lance un programme, il m'en exécute un autre mais que je veux répéter l'opération plusieurs fois pour d'autres logiciels, est-ce qu'il est possible de tout mettre dans le même script ou alors je dois créer un script pour chaque ensemble de 2 logiciels?

Je sais pas si c'est assez clair.

Je poste un code faux qui vous donnera une idée sur ce que je souhaiterais faire :
► Afficher le texte



avec adlibenable sa peut marcher non?
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [R] Exécuter un programme lorsque j'en lance un autre

#13

Message par Habibsbib »

En fait, il veut lui même (c'est à dire sans autoit) exécuter un programme, et il désire qu'autoit détecte le moment ou il le lance pour en lancer un autre. Donc non, je ne pense pas que AdvlibEnable conviendrait dans cette situation.

Au fait Pimooz, je suis un peu curieux ( :mrgreen: ) à quoi il sert ton script ?
Utilisateur 2008 supprimé
Status : Hors ligne

[..] Exécuter un programme lorsque j'en lance un autre

#14

Message par Utilisateur 2008 supprimé »

C'est à dire? Tu pourrais me montrer un exemple de script avec la commande AdvlibEnable.

Si je veux lancer AutoIt mais je ne veux pas lancer plusieurs scripts. Je voudrais que chaque ensemble de 2 logiciels soient inclus dans un seul script.

En fait pour bien expliquer, je m'en sers pour plusieurs jeux PC. Par exemple, si je lance Mirror's Edge il me lance une certaine configuration de manette et si je lance Prototype, il me lance une autre configuration de manette.

Je sais pas si je suis assez clair...

Sâchez juste que l'autre script marchait bien mais que je voudrais ne pas avoir à lancer au démarrage de Windows les 10 scripts.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#15

Message par pop45 »

tu fait les 2 chose en fonction et tu demande a chacune des 2 (avec advlibenable ) de s'executer tout les second pas exemple
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#16

Message par Utilisateur 2008 supprimé »

Je suis obligé de mettre un temps donné?

Tu pourrais me faire une exemple?

Merci d'avance.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#17

Message par pop45 »

PimOoze a écrit :Je suis obligé de mettre un temps donné?

Tu pourrais me faire une exemple?

Merci d'avance.
Je sait pas j'ai jamais utiliser ce genre de chose

Sa doit resemble a sa

Code : Tout sélectionner

adlibenable (fonction1 , 1000) ; pour une seconde
adlibenable (fonction2 , 1000) ; pareillle

func fonction1 ()
;
;La tu met le code du 1er script pour xmb je crois
;
enfunc

func fonction2 ()
;
La tu met le code du 2eme script pour mirrors edge
;
endfunc

 
Je pas sur que se soit comme sa :?
Modifié en dernier par pop45 le dim. 18 oct. 2009 17:20, modifié 1 fois.
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#18

Message par Iste »

C'est quoi votre truc avec le nom de cette fonction ??
C'est "AdlibEnable" son nom !
A moins qu'il sagisse d'une autre fonction, d'un udf obscure ? mais aucune trace n'en est sur ce forum...

Bref passons, AdlibEnable n'est pas la solution, et en regle général, n'est pas une bonne solution
Ici simplement car AdlibEnable ne permet pas de lancer plusieurs fonctions (ce qui en soit suffit a bannir cette fonction) et en plus, les boucles contiennent d'autre boucle ! Ce qui bloquerai le script.

Bref, voici une idée, que je viendrais completer d'un exemple plus tard si il faut.

Dans les script crées, rajouter #NoTrayIcon$ pour plus les voir, récuperer le handle de leur process au lancment, et créer dans le script principal une GUI pour terminer ces process le moment venu
Signez ici
Utilisateur 2008 supprimé
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#19

Message par Utilisateur 2008 supprimé »

Merci pop45 mais ça ne fonctionne pas.

Et Iste je veux bien un exemple :mrgreen:

J'ai réussi à cacher les scripts du systray. Mais j'aimerais que tu m'expliques plus précisément pour le reste avec un exemple.

Merci d'avance. :wink:
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Exécuter un programme lorsque j'en lance un autre

#20

Message par Iste »

Voici un exemple complet
► Afficher le texte
La fonction script() lance l'exe "$Process2" quand le process $Process1 est détecté, et renvoi le PID du script qui s'occupe de faire ca. Il suffit donc de faire "$script = script('process','exe')" pour surveiller process et de faire ProcessClose($script) pour tuer le process qui surveille.
J'ai mi tout le coté GUI dans le tray apres..
Signez ici
Répondre