Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running an external exe from win32 application

I am working on a WIN32 application in Visual Studio 2010. I have to execute an external exe from my code but don't have to show its window. along with executing the exe I am passing certain argument to exe. my code is given

char path[] = "D:\\scan\\scan.exe -l";
system(path);
//ShellExecute(hWnd, "open",path, NULL, NULL, SWP_HIDEWINDOW); 

if I use system(path) it is executed properly but the window of the exe is also shown, but if I use ShellExecute(hWnd, "open",path, NULL, NULL, SWP_HIDEWINDOW); then the exe of the given path is not executed. how should I overcome this problem, kindly guide me

like image 249
WiXXeY Avatar asked Oct 23 '25 14:10

WiXXeY


2 Answers

ShellExecute wants the program name and its parameters to be given separately. Try this:

ShellExecute(hWnd, NULL, "D:\\scan\\scan.exe", "-l", NULL, SW_HIDE);
like image 141
Jonathan Potter Avatar answered Oct 25 '25 04:10

Jonathan Potter


You should really use CreateProcess which does not use the shell to call a program. This also allows you to capture the program output and retrieve any error codes it might give.

If you need to hide the window of a GUI app, you can set CREATE_NO_WINDOW in the dwFlags in the CreateProcess call (cfr. this answer)

like image 38
rubenvb Avatar answered Oct 25 '25 04:10

rubenvb



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!