c++ - 为什么 ShellExecute()ing cmd.exe 隐藏有效?

标签 c++ winapi cmd

尝试使用 SW_HIDE 参数执行 cmd.exe 时:

ShellExecute(NULL, "open", "cmd.exe", NULL, NULL, SW_HIDE);

cmd.exe实际上是隐藏执行的!我不明白为什么会发生这种情况,cmd.exe 的控制台窗口是否被视为接受 nCmdShow 参数的“正常”窗口,或者 cmd.exe 在执行时是否看到我传递了 SW_HIDEnCmdShow 参数并决定不显示控制台窗口?

注意:我在 Windows 7 上尝试了此代码。

最佳答案

这意味着 cmd.exe 只是使用 WinMainnCmdShow 参数(或者它使用 SW_SHOWDEFAULT > 这意味着同样的事情)通过 ShowWindow 显示其窗口时,无需先检查或修改值。

没有记录表明它会起作用,因此您不应该依赖它,但它是一个很好的副作用,可以是在不出现可见窗口的情况下运行批处理脚本的好方法。

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

关于c++ - 为什么 ShellExecute()ing cmd.exe 隐藏有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31085453/

相关文章:

windows - 如何在 cmd 或 PowerShell 中跟踪符号/软链接(soft link)?

c++ - c++ 中的 int (*) [ someValue] 是什么?

c++ - 什么时候不在头文件中使用包含保护?

c# - 如何获取应用程序的事件 ChildWindow?

winapi - 可以将 TCP SOCKET 句柄设置为不可继承吗?

c++ - CreateMutex 永远不会返回 ERROR_ALREADY_EXISTS

powershell - 从右键单击菜单中的特定目录以管理员身份打开 PowerShell

ruby-on-rails - 在 Windows cmd 上显示 unix 颜色(例如 ←[31m)

c++ - 在 unix 上找不到 C++ 库

c++ - 想要在 OSX 上的 OpenCV 中实时镜像视频,不知道从哪里开始