Estoy usando ShellExecuteEx
para ejecutar un comando en C. ¿Hay alguna manera de usar ShellExecuteEx
y capturar in/out/err estándar?Usando ShellExecuteEx y capturando estándar in/out/err
Nota: No quiero usar CreateProcess
.
Estoy usando ShellExecuteEx
para ejecutar un comando en C. ¿Hay alguna manera de usar ShellExecuteEx
y capturar in/out/err estándar?Usando ShellExecuteEx y capturando estándar in/out/err
Nota: No quiero usar CreateProcess
.
Según lo mencionado por pilif y Bob, debe usar CreateProcess
.
Si desea código que lo envuelve todo para usted, tengo una clase para este problema exacto en:
http://code.google.com/p/kgui/source/browse/trunk/kguithread.cpp.
La clase (kGUICallThread
) maneja las versiones de Linux, macOS y Windows. El código tiene licencia LGPL.
Eso no es posible. ShellExecute
(Ex
) básicamente ejecuta la aplicación en el contexto del shell, por lo que básicamente está haciendo lo que hace el explorador.
La captura de entrada y salida estándar es algo que la cáscara generalmente no lo hace, usted tendrá que ir a la ruta CreateProcess
(que, después de todo, es lo que llama ShellExecute
finalmente si el archivo a ejecutar es un programa y es el verbo 'abierto').
No. La única forma de hacerlo es usar CreatePipe
y CreateProcess
. Consulte el artículo de MSDN here
Yo solía encontrar el problema como tú.
Supongamos, que desea capturar la salida de la salida estándar que se genera por dir comando y guardar la capturaron en out.txt.
editor de texto y escriba Uso dir> out.txt y guardarlo con mybat.bat (* .bat, no * .txt)
En el C/C++ programa, tipo WinExec ("mybat.bat", SW_HIDE); y ejecuta tu aplicación.
Abra out.txt Verá el nombre de las carpetas y archivos en el directorio actual.
Además, puede ejecutar cualquier archivo ejecutable (* .exe) de la misma manera que a continuación.
xxx.exe> out.txt
espero que pueda ser usted ayuda. Lo siento, mi inglés realmente no es bueno.
CreateProcess es lo que la mayoría de la gente usa.
También es posible que desee considerar el uso _popen
http://msdn.microsoft.com/en-us/library/96ayss4b%28VS.80%29.aspx