CreateProcess Sans afficher fenetre d'execution [Résolu]

Signaler
Messages postés
32
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 mars 2008
-
Messages postés
32
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 mars 2008
-
Bonjour,

Je lance une serie de script depuis mon programme.
Pour cela j'utilise :

PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
...
CreateProcess(0,cmdLine2, 0, 0, 0,CREATE_SUSPENDED, 0, 0, &si, &pi);
...
les scripts lancer sont des batchs ou des perls.

je souhaiterais que leur fenetre d'execution ne s'affiche pas.

Quelqu'un aurrais une solution?
Merci d'avance

12 réponses

Messages postés
154
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
2 octobre 2009

Essayes ceci:

CreateProcess(0,cmdLine2, 0, 0, 0,CREATE_SUSPENDED|DETACHED_PROCESS, 0, 0, &si, &pi);



C'est ce que j'avais utilisé (sans le CREATE_SUSPENDED) dans un prog
qui lançait des compressions de plusieurs dossiers avec le programme
dos "RAR.EXE".

Je ne voyais jamais la console, pour la simple et bonne raison que
celle-ci doit être explicitement créée par le processus s'il en veut
une (du moins, c'est ce que j'ai compris avec MSDN)
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006

system() n'affiche pas la fenetre je pense.
Messages postés
32
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 mars 2008

C'est ceque j'utilisais avant.
System m'affiche les fenetres.

Je commence à me demander si sa vientpas de mes script.
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006

c'est bien ça, system() n'affiche la fenetre que une milli seconde au début, donc ça doit être tes scripts.
Messages postés
32
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 mars 2008

ben je veut bien mais il y a toujours le retour d'execution des fonctions qui s'affiche dans ces script , non?
exemple:

@echo off
net use z: [file://serveur/repertoire \\serveur\repertoire]

ce genre de script me renvoi toujours le resultat a l'ecran
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006

tu dois récuperer le résultat ?



tu peux mettre le résultat dans un fichier text :



"net use z: [file://serveur/repertoire \\serveur\repertoire] > test.txt"



Puis le lire depuis ton programme.
Messages postés
32
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 mars 2008

j'en ai pas vraiment besoin.

enfin si, mais juste le code d'erreur, pas tout le texte qui s'affiche.

Mais la on s'ecarte un peut du sujet.

A chaque commande lancer la fenetre dos s'ouvre.
Et moi je veut pas que sa se voit.

1) sa me bousille l'affichage de ma dialog
2) l'utilisateur risque de flipper à voir 15 fenetre qui s'ouvre et se referme aussi tot.
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006

system("start "un_titre" test.bat");



HWND hWnd = FindWindow(0, "un_titre");



ShowWindow(hWnd, SW_HIDE);





Faudra esseyer.
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
32
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 mars 2008

ben le problem c'est que ces saleter de fenetre dos s'affiche par dessus ma suberbe progress bar et les commentaire qui vont avec.

Mais sinon le programme tourne parfaitement....
Enfin plus ou moin.... ;-)
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
32
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 mars 2008

Bon c presque bon,

CreateProcess(0,cmdLine2, 0, 0, 0,CREATE_SUSPENDED|DETACHED_PROCESS, 0, 0, &si, &pi);

lors que je lance un net use grace a sa j'ai plus le retour "command success..." qui s'affiche. donc sa c bien.

Il me reste quant meme quelque script qui continue a afficher de retour console mais bon sa doit venir d'autre chose.

Merci a tous pour votre aide.