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

armetiz 25 Messages postés lundi 8 août 2005Date d'inscription 6 juin 2007 Dernière intervention - 2 nov. 2005 à 14:54 - Dernière réponse : ordromike 6 Messages postés jeudi 27 janvier 2005Date d'inscription 5 mars 2010 Dernière intervention
- 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
bv94 40 Messages postés dimanche 2 février 2003Date d'inscription 16 décembre 2006 Dernière intervention - 2 nov. 2005 à 19:45
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

Merci bv94 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de bv94
armetiz 25 Messages postés lundi 8 août 2005Date d'inscription 6 juin 2007 Dernière intervention - 2 nov. 2005 à 15:42
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
bv94 40 Messages postés dimanche 2 février 2003Date d'inscription 16 décembre 2006 Dernière intervention - 2 nov. 2005 à 19:06
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
armetiz 25 Messages postés lundi 8 août 2005Date d'inscription 6 juin 2007 Dernière intervention - 2 nov. 2005 à 19:24
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
armetiz 25 Messages postés lundi 8 août 2005Date d'inscription 6 juin 2007 Dernière intervention - 2 nov. 2005 à 19:49
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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 16 nov. 2005 à 01:28
0
Merci
Bonjour Armetiz
Essaye ceci : http://www.delphifr.com/code.aspx?ID=34484
@+
Cirec
Commenter la réponse de Cirec
ordromike 6 Messages postés jeudi 27 janvier 2005Date d'inscription 5 mars 2010 Dernière intervention - 5 mars 2010 à 11:03
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.