Page 1 sur 1

[R] Commande Run avec un argument

Posté : mar. 02 sept. 2008 23:30
par croco
Bonjour,
je suis nouveau et je découvre petit à petit les fonctionnalités d'AutoIt. J'ai fais les petits tutoriels proposés mais je n'arrive pas à trouver la solution à un problème.

J'aimerais lancer un programme et ensuite ouvrir un fichier avec celui-ci. Je n'ai pas encore trouver comment on naviguait dans les menus d'un programme (Fichier,Edition, etc ...). J'ai vu qu'on pouvait utilisé la touche ALT+la lettre correspondante. Par exemple ALT+F puis ALT+O pour faire ouvrir mais après comment on navigue pour sélectionner un fichier ?

Pour palier à ce soucis j'ai pensé dans un premier temps à forcer le choix du fichier lorsqu'on lance le programme désiré mais j'ai un soucis
exemple :

Code : Tout sélectionner

#include <Process.au3>
$image="C:\Program Files\Messenger\lvback.gif"
MsgBox(0, "Test", $image)
Run("C:\WINDOWS\system32\mspaint.exe &image")
WinWaitActive("lvback.gif - Paint")
WinSetState("lvback.gif - Paint", "", @SW_MAXIMIZE)


ou

Code : Tout sélectionner

#include <Process.au3>
$image="C:\Program Files\Messenger\lvback.gif"
MsgBox(0, "Test", $image)
Run("C:\WINDOWS\system32\mspaint.exe C:\Program Files\Messenger\lvback.gif")
WinWaitActive("lvback.gif - Paint")
WinSetState("lvback.gif - Paint", "", @SW_MAXIMIZE)


biensur là ça ne fonctionne pas à cause de l'espace derrière Program


sinon j'ai testé la commande suivante dans CMD de Windows:
C:\WINDOWS\system32\mspaint.exe "C:\Program Files\Messenger\lvback.gif" et elle fonctionne.
Comment l'exploiter avec la fonction _RunDOS, je ne comprends pas comment utiliser cette fonction.


Merci à ceux qui prendront le temps de me répondre.

Re: [..] Commande Run avec un argument

Posté : mer. 03 sept. 2008 02:44
par Tlem
Pourquoi utiliser la fonction _RunDos alors que MsPaint est un programme Windows ???

Utilisez tout simplement la fonction ShellExecute ou ShellExecuteWait qui permet de rajouter un argument, et bien d'autres choses.

Re: [..] Commande Run avec un argument

Posté : mer. 03 sept. 2008 09:05
par croco
merci de ta réponse mais le problème persiste :

Code : Tout sélectionner

ShellExecute("C:\WINDOWS\system32\mspaint.exe","C:\WINDOWS\system32\setup.bmp","","", @SW_MAXIMIZE)
WinWaitActive("setup.bmp - Paint")
 
fonctionne et ceci non :

Code : Tout sélectionner

ShellExecute("C:\WINDOWS\system32\mspaint.exe","C:\Program Files\Messenger\lvback.gif","","", @SW_MAXIMIZE)
WinWaitActive("lvback.gif - Paint")
 
toujours à cause de l'espace de Program Files

Re: [..] Commande Run avec un argument

Posté : mer. 03 sept. 2008 13:38
par timmalos
Testé avec :
ShellExecute("C:\WINDOWS\system32\mspaint.exe", @ProgramFilesDir & "\Messenger\lvback.gif","","", @SW_MAXIMIZE)
WinWaitActive("lvback.gif - Paint")

Le probleme est le meme, il vient donc de la fonction shellexecute et de son "parametre"

Re: [..] Commande Run avec un argument

Posté : mer. 03 sept. 2008 20:23
par Tlem
timmalos a écrit :il vient donc de la fonction shellexecute et de son "parametre"
Hé non ... :P

Sous Windows XP, essayez de faire : Démarrer -> Exécuter -> et tapez ceci :
C:\WINDOWS\system32\mspaint.exe C:\Program Files\Messenger\lvback.gif
ou ceci :
mspaint.exe C:\Program Files\Messenger\lvback.gif

Ha ha, c'est donc mspaint qui pose le problème. :lol: :mrgreen:
En réalité, la plupart des programmes qui acceptent des arguments, ont besoin que l'on délimite chaque argument par (en général) des guillemets et ceci afin de ce prémunir justement des problèmes avec des arguments contenant des espaces. 8)

Donc pour résoudre le problème de croco, il lui suffit de rajouter les guillemets pour l'argument et l'affaire est dans la poche. ;)

Code : Tout sélectionner

ShellExecute("C:\WINDOWS\system32\mspaint.exe",'"C:\Program Files\Messenger\lvback.gif"',"","", @SW_MAXIMIZE)
WinWaitActive("lvback.gif - Paint")
Sinon, pour répondre à la première question, voici la solution :

Code : Tout sélectionner

$image="C:\Program Files\Messenger\lvback.gif"
Run("C:\WINDOWS\system32\mspaint.exe " & '"' & $image & '"' )
WinWaitActive("lvback.gif - Paint")
 

Re: [R] Commande Run avec un argument

Posté : mer. 03 sept. 2008 20:32
par croco
Merci beaucoup pour l'explication! je commençais à devenir fou :p

Re: [R] Commande Run avec un argument

Posté : mer. 03 sept. 2008 21:03
par timmalos
En effet, ca marche beaucoup mieux :)

Re: [R] Commande Run avec un argument

Posté : mer. 03 sept. 2008 22:24
par ani
Quand entendont nous, défault de paramètre ??
Bizzarité ? Problème logiciel & fonction et bien bien faite gaffe :D

Y a cette solution mais très peu pour moi :)

Code : Tout sélectionner

ShellExecute("mspaint",'"c:\program files"\Messenger\lvback.gif',"","",@SW_MAXIMIZE) 
WinWaitActive("lvback.gif - Paint")
et comme le dit si bien la documentation :D

Code : Tout sélectionner

ShellExecute("lvback.gif", "", @ProgramFilesDir & "\Messenger\", "edit",@SW_MAXIMIZE) 
WinWaitActive("lvback.gif - Paint")
la fonction décrite ci-dessus est identique à celle sous windows, elle se comporte de la même manière ;)

1 = Fichier à excécuter, ici c'est l'image gif
2 = Paramètre du programme ? rien ;)
3 = Répertoire du fichier qu'on va excécuter @ProgramFilesDir & "\Messenger\
4 = Paramètre (verbe), on va l'éditer :)
5 = Le flag (Drapeau) ;)

En suivant ce schemas, on peut exemple le faire pour mspaint ;)

Code : Tout sélectionner

ShellExecute("mspaint", "lvback.gif",@ProgramFilesDir &'\Messenger',"open",@SW_MAXIMIZE) 
WinWaitActive("lvback.gif - Paint")
Bonne continuation

Edit : Un Tuto va faire son apparition sur ce sujet