I'm having a serious problem here. I need to execute a CMD command line via C++ without the console window displaying. Therefore I cannot use system(cmd)
, since the window will display.
I have tried winExec(cmd, SW_HIDE)
, but this does not work either. CreateProcess
is another one I tried. However, this is for running programs or batch files.
I have ended up trying ShellExecute
:
ShellExecute( NULL, "open",
"cmd.exe",
"ipconfig > myfile.txt",
"c:\projects\b",
SW_SHOWNORMAL
);
Can anyone see anything wrong with the above code? I have used SW_SHOWNORMAL
until I know this works.
I really need some help with this. Nothing has come to light, and I have been trying for quite a while. Any advice anyone could give would be great :)
I have a similar program [windows7 and 10 tested] on github
https://github.com/vlsireddy/remwin/tree/master/remwin
This is server program which
This does not show "console window" No need for someone to execute manually command on cmd.exe remwin.exe can be running in background and its a thin server program
Redirecting the output to your own pipe is a tidier solution because it avoids creating the output file, but this works fine:
You don't see the cmd window and the output is redirected as expected.
Your code is probably failing (apart from the
/C
thing) because you specify the path as"c:\projects\b"
rather than"c:\\projects\\b"
.Here is my implementation of a DosExec function that allows to (silently) execute any DOS command and retrieve the generated output as a unicode string.
You should use CreateProcess on
cmd.exe
with the/C
parameter to tunnel the ipconfig command. The > does not work per se on the command line. You have to redirect programmatically the stdout.