Lancement commande, dans le meme processus, avec shelle execute [Résolu]

Messages postés
25
Date d'inscription
lundi 8 août 2005
Dernière intervention
6 juin 2007
- - Dernière réponse : ordromike
Messages postés
6
Date d'inscription
jeudi 27 janvier 2005
Dernière intervention
5 mars 2010
- 5 mars 2010 à 11:03
Coucou, voila, suite aux réponses que j'ai obtenues sur le forum (grand merci), je suis tomber sur un petit pb..
J'ai trois lignes de Shell à taper, pour obtenir un truc du genre :

Date
Heure
List.. (dir)

Obtenu avec :
date > test.txt
time >> test.txt


dir c:/ >> test.txt

J'ai donc, fait les trois shellexecute a la suite, mais le pb, c'est qu'il se lance chaqu'un dans une fenetre differente..et, si le dernier se fait avant le premier, ca pose probleme.. car, le premier, efface le contenu precedent du fichier texte..

J'aurai voulu savoir s'il existait un parametre inconnu dans shellexecute, pour lancer dans le meme processus ? ou alors, attendre que la commande se termine pour lancer l'autre..

J'ai regader avec LanchAndWait, une fonction fait maison qui est un peu partout sur le forum, mais.. j'ai du mal a la comprendre malgré tout, et, je doute pouvoir faire se que je fais actuellement avec.
Voila, et encore merci !
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
40
Date d'inscription
dimanche 2 février 2003
Dernière intervention
16 décembre 2006
3
Merci
var
si: TStartupInfo;
pi: TProcessInformation;
commande : string;
begin
commande := 'Ta_commande';
si.wShowWindow := SW_HIDE; // SW_SHOW pour la voir
si.lpReserved := nil ;
si.lpDesktop := nil ;
si.lpTitle := nil ;
si.dwFlags := STARTF_USESHOWWINDOW; //Obligatoire pour utiliser si.wShowWindow
si.cbReserved2 := 0 ;
si.lpReserved2 := nil ;
si.cb := SizeOf(si) ;

CreateProcess(nil, pchar(commande), nil, nil, False, CREATE_DEFAULT_ERROR_MODE, nil, ('c:'), si, pi);
WaitForSingleObject(Pi.hProcess,INFINITE); //Infinite peut être remplacé par une valeur en ms qui indique le timeout
end;

Et voila...

Bonne prog

BV94

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de bv94
Messages postés
25
Date d'inscription
lundi 8 août 2005
Dernière intervention
6 juin 2007
0
Merci
j'ai trouver un truc. mais, j'arrive pas a le faire fonctionner.


Utilisation de plusieurs commandes


Dans la chaîne, vous pouvez utiliser plusieurs commandes séparées par le séparateur && à condition de les placer entre guillemets
(par exemple, "commande&&commande&&commande").


mais.. je dois mal l'utiliser...
"dir c:/&&dir d:/"
comme dir n'est pas une commande interne je ne sais quoi.. ah marche pô :s
voila.. c'est con, j'vais retourner avec un vieux fichier bat placer dans le meme repertoire que mon appli...
Commenter la réponse de armetiz
Messages postés
40
Date d'inscription
dimanche 2 février 2003
Dernière intervention
16 décembre 2006
0
Merci
Utilise la commande CreateProcess, elle te permet de recupere le handle de l'executable que tu lances, puis d'attendre avec la commande waitForSingleProcess que le processus soit terminé...
Commenter la réponse de bv94
Messages postés
25
Date d'inscription
lundi 8 août 2005
Dernière intervention
6 juin 2007
0
Merci
j'vais continuer mes recherches alors.. car j'ai pas trouver d'info sur createprocess, j'avais deja chercher (j'lavais vu quelque part..) mais pas trouver de syntaxe (ou alors, que je comprennais lol).

Thx
Commenter la réponse de armetiz
Messages postés
25
Date d'inscription
lundi 8 août 2005
Dernière intervention
6 juin 2007
0
Merci
thx :D je vera ca demain a tete reposer, grand merci aux gens du forum.. participation active de partout..c'est beau a voir*.
Commenter la réponse de armetiz
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
Bonjour Armetiz
Essaye ceci : http://www.delphifr.com/code.aspx?ID=34484
@+
Cirec
Commenter la réponse de Cirec
Messages postés
6
Date d'inscription
jeudi 27 janvier 2005
Dernière intervention
5 mars 2010
0
Merci
Bonjour,

J'ai le même problème:
J'ai besoin de lancer plusieurs commandes shell mais chaque résultat d'une commande change les autres commandes.

Exemple, je fais un dir d'un répertoire, s'il y a des fichiers je fais un del et s'il y a rien, je fais un dir sur un autre répertoire.

Donc je peux pas lancer mes commandes à la suite les unes des autres.

Avec la fonction CreateProcess, je lance plusieurs cmd.exe et moi je voudrait avoir un seul cmd.exe et lui envoyer les commandes les une après les autres.

Est-ce possible ou pas ?
Commenter la réponse de ordromike

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.