【问题标题】:Running an external exe from win32 application从 win32 应用程序运行外部 exe
【发布时间】:2013-10-03 08:37:19
【问题描述】:

我正在 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。 我该如何克服这个问题,请指导我

【问题讨论】:

    标签: c++ windows winapi visual-c++


    【解决方案1】:

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

    ShellExecute(hWnd, NULL, "D:\\scan\\scan.exe", "-l", NULL, SW_HIDE);
    

    【讨论】:

    • SWP_HIDE -> 你是说 SW_HIDE 吧?
    • @duDE:错字已修复,ta。
    • @jonathan potter thanx
    【解决方案2】:

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

    如果您需要隐藏GUI应用程序的窗口,您可以在CreateProcess调用中的dwFlags中设置CREATE_NO_WINDOW(参见this answer

    【讨论】:

    • 您假设该程序是一个控制台应用程序。
    • @Jonathan 查看编辑。仍然没有理由去壳。 ShellExecute 对其他事情很有用(请参阅其文档 here),但它绝对不是这项工作的正确工具。
    • 是的,我以前用过ShellExecute :)
    猜你喜欢
    • 2011-12-07
    • 2011-03-26
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    相关资源
    最近更新 更多