Ce n'est pas possible. ShellExecute(Ex) exécute essentiellement l'application dans le contexte de la coquille - donc, vous êtes essentiellement faire ce que l'explorateur n'.
La capture de STDIN et STDOUT est quelque chose que le shell ne pas le faire, que vous devrez aller le CreateProcess route (qui, après tout, est ce que ShellExecute appelle éventuellement si le fichier à exécuter est un programme et le verbe est "ouvert").
Comme mentionné par pilif et Bob, vous devez utiliser
CreateProcess
.Si vous voulez le code qui encapsule tout pour vous, j'ai une classe pour ce problème précis:
http://code.google.com/p/kgui/source/browse/trunk/kguithread.cpp.
La classe (
kGUICallThread
) poignées de Linux, macOS et Windows. Le code est sous licence LGPL.OriginalL'auteur KPexEA
- Je utiliser pour trouvé le problème comme vous.
Supposons que Vous voulez capturer la sortie STDOUT qu'elle est générée par dir de commande et enregistrer la capture dans out.txt.
Utilisation de l'éditeur de texte et tapez dir > out.txt et l'enregistrer avec mybat.chauve-souris (*.chauve-souris, ne pas *.txt)
Dans votre programme c/c++, type de WinExec("mybat.chauve-souris", SW_HIDE); et exécuter votre application.
Ouvrir le out.txt, vous verrez le nom des dossiers et des fichiers dans le répertoire courant.
Aussi, vous pouvez exécuter n'importe quel fichier exécutable (*.exe) lors de la même façon que les suivre.
xxx.exe > out.txt
Je l'espère, il peut être de vous aide.
Désolé, mon anglais s'est vraiment pas bon.
OriginalL'auteur
Pas. La seule façon de le faire est d'utiliser
CreatePipe
etCreateProcess
. Consultez l'article MSDN iciOriginalL'auteur Bob Moore
Ce n'est pas possible.
ShellExecute
(Ex
) exécute essentiellement l'application dans le contexte de la coquille - donc, vous êtes essentiellement faire ce que l'explorateur n'.La capture de STDIN et STDOUT est quelque chose que le shell ne pas le faire, que vous devrez aller le
CreateProcess
route (qui, après tout, est ce queShellExecute
appelle éventuellement si le fichier à exécuter est un programme et le verbe est "ouvert").OriginalL'auteur pilif
CreateProcess est ce que la plupart des gens utilisent.
Vous pouvez aussi envisager d'utiliser _popen
http://msdn.microsoft.com/en-us/library/96ayss4b%28VS.80%29.aspx
OriginalL'auteur Jason