gourav_jain
asked on
Execution dos command through VC++
Hi,
I want to execute a dos based utility using my VC++ program and display the output generated by the program in the GUI. There are few ways to do this one is to use the system command but my utility take 5-10 secs. to complete and for this time the system command shows the dos window on top of everything.
The other way is to use the PIPE open the command output in the pipe and display the result but in that way as well the DOS window pops up.
Is there any way to achive this in which the utility will be executed in the background and i will get the output in a buffer.
Gourav Jain
I want to execute a dos based utility using my VC++ program and display the output generated by the program in the GUI. There are few ways to do this one is to use the system command but my utility take 5-10 secs. to complete and for this time the system command shows the dos window on top of everything.
The other way is to use the PIPE open the command output in the pipe and display the result but in that way as well the DOS window pops up.
Is there any way to achive this in which the utility will be executed in the background and i will get the output in a buffer.
Gourav Jain
ASKER
I dont have the source code of that utility
Gourav Jain
Gourav Jain
In what manner do You start utilty?
In case
WinExec(...,SW_HIDE);
In case
CreateProcess();
in structure STARTUPINFO wShowWindow = SW_HIDE;
In case
WinExec(...,SW_HIDE);
In case
CreateProcess();
in structure STARTUPINFO wShowWindow = SW_HIDE;
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
A simple way is to use DOS redirect method.
Example:
system("myprog.exe > datafile.txt");
The above command will put the output into datafile.txt file.
Example:
system("myprog.exe > datafile.txt");
The above command will put the output into datafile.txt file.
If you want to hide the process, you can use WinExec with the redirect command.
Example:
WinExec("myprog.exe > datafile.txt",SW_HIDE);
Example:
WinExec("myprog.exe > datafile.txt",SW_HIDE);
>>WinExec("myprog.exe > datafile.txt",SW_HIDE);
*Cough*
WinExec("cmd.exe /c myprog.exe > datafile.txt",SW_HIDE);
BTW, a full sample on how to do that can be found at http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q190/3/51.ASP&NoWebContent=1 ("HOWTO: Spawn Console Processes with Redirected Standard Handles")
*Cough*
WinExec("cmd.exe /c myprog.exe > datafile.txt",SW_HIDE);
BTW, a full sample on how to do that can be found at http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q190/3/51.ASP&NoWebContent=1 ("HOWTO: Spawn Console Processes with Redirected Standard Handles")
A small doubt: Where is WinExec() function defined?
Amit