3

我正在Visual Studio 2010中开发 WIN32 应用程序。我必须从我的代码中执行一个外部 exe,但不必显示它的窗口。随着执行exe,我将某些参数传递给exe。我的代码给出

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

如果我使用 system(path) 它会正确执行,但也会显示 exe 的窗口,但如果我使用 ShellExecute(hWnd, "open",path, NULL, NULL, SWP_HIDEWINDOW); 然后不执行给定路径的exe。我该如何克服这个问题,请指导我

4

2 回答 2

6

ShellExecute希望单独给出程序名称及其参数。试试这个:

ShellExecute(hWnd, NULL, "D:\\scan\\scan.exe", "-l", NULL, SW_HIDE);
于 2013-10-03T08:40:36.003 回答
2

你真的应该使用CreateProcesswhich 不使用 shell 来调用程序。这还允许您捕获程序输出并检索它可能给出的任何错误代码。

如果需要隐藏某个 GUI 应用的窗口,可以CREATE_NO_WINDOW在调用dwFlags中设置CreateProcess(cfr.this answer

于 2013-10-03T08:56:11.883 回答