尝试使用 SW_HIDE
参数执行 cmd.exe 时:
ShellExecute(NULL, "open", "cmd.exe", NULL, NULL, SW_HIDE);
cmd.exe实际上是隐藏执行的!我不明白为什么会发生这种情况,cmd.exe 的控制台窗口是否被视为接受 nCmdShow
参数的“正常”窗口,或者 cmd.exe 在执行时是否看到我传递了 SW_HIDE
为 nCmdShow
参数并决定不显示控制台窗口?
注意:我在 Windows 7 上尝试了此代码。
最佳答案
这意味着 cmd.exe
只是使用 WinMain
的 nCmdShow
参数(或者它使用 SW_SHOWDEFAULT
> 这意味着同样的事情)通过 ShowWindow
显示其窗口时,无需先检查或修改值。
没有记录表明它会起作用,因此您不应该依赖它,但它是一个很好的副作用,可以是在不出现可见窗口的情况下运行批处理脚本的好方法。
当然,如果您实际上在隐藏窗口中启动交互式cmd.exe
,则很难使其可见:)
关于c++ - 为什么 ShellExecute()ing cmd.exe 隐藏有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31085453/