为什么隐藏的ShellExecute()ing cmd.exe有效?

时间:2015-06-27 05:22:01

标签: c++ winapi cmd

尝试使用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上尝试过此代码。

1 个答案:

答案 0 :(得分:1)

这意味着cmd.exe只是nCmdShow使用WinMain参数{或者SW_SHOWDEFAULT使用ShowWindow,这意味着相同的事情)通过{{显示其窗口时1}},不先检查或修改值。

没有记录它会起作用,所以你不应该依赖它,但这是一个很好的副作用,可以很好地运行批处理脚本而不会出现可见的窗口。

当然,如果您实际在隐藏窗口中启动交互式cmd.exe,则很难将其显示为可见:)