[R] Commande Run avec un argument

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
croco
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 02 sept. 2008 17:58
Status : Hors ligne

[R] Commande Run avec un argument

#1

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Commande Run avec un argument

#2

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
croco
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 02 sept. 2008 17:58
Status : Hors ligne

Re: [..] Commande Run avec un argument

#3

Message 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
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Commande Run avec un argument

#4

Message 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"
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Commande Run avec un argument

#5

Message 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")
 
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
croco
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 02 sept. 2008 17:58
Status : Hors ligne

Re: [R] Commande Run avec un argument

#6

Message par croco »

Merci beaucoup pour l'explication! je commençais à devenir fou :p
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] Commande Run avec un argument

#7

Message par timmalos »

En effet, ca marche beaucoup mieux :)
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [R] Commande Run avec un argument

#8

Message 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
Modifié en dernier par Tlem le jeu. 04 sept. 2008 00:34, modifié 1 fois.
Répondre