Bonjour
J'ai un exécutable "console" qui s'appelle "Test.exe" et qui prend en paramètre un fichier d'entrée et un fichier de sortie. "Test C:\tmp\toto.bmp C:\tmp\toto.gif" par exemple.
L'exécutable Test.exe a des instructions "cout" ou "printf" pour indiquer l'avancement de son traitement.
Et donc si j'exécute en ligne de commande : "Test C:\tmp\toto.bmp C:\tmp\toto.gif > Log.txt", je récupère toutes les sorties "std::cout << " dans le fichier Log.txt.
Je voudrais exécuter "Test C:\tmp\toto.bmp C:\tmp\toto.gif > Log.txt" à partir d'un programme Win32.
1) J'ai essayé la commande
Et ça fonctionne, sauf que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part int nRetour = system("\"C:\\dev\\essai\\Test.exe\" C:\\tmp\\toto.bmp C:\\tmp\\toto.gif > Log.txt");
- une grosse fenêtre noire s'ouvre, alors que je ne voudrais pas la voir
- pour les parametres 1 et 2 (toto.bmp et toto.gif), j'ai une erreur si je les encadre par des guillemets et si je ne met pas de guillements et que j'ai un espace dans un chemin, Test.exe voit 3 parametres au lieu de 2
2) J'ai essayé la fonction ShellExecute de l'API Win32
La commande fonctionne très bien, si je met SW_HIDE à la place de SW_SHOW, je ne vois pas la fenêtre noire, mais...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 HINSTANCE hRetour; hRetour = ShellExecute(this->Handle, "open", strExe.c_str(), strParametres.c_str(), ExtractFilePath(ParamStr(0)).c_str(), SW_SHOW);
... si je met "a b > out.txt" dans strParametres, le programme "Test.exe" n'interprète pas le ">" comme une redirection et passe 4 paramètres à l'exécutable ("a", "b", ">" et "out.txt") ...
Vous auriez une idée pour faire un "mix" de ces deux commandes ?
C'est à dire pouvoir utiliser le redirecteur ">" et en même temps ne plus voir la fenêtre dos noire à l'exécution ?
Partager