如何从没有控制台窗口的 C/C++ 执行批处理文件?
Posted
技术标签:
【中文标题】如何从没有控制台窗口的 C/C++ 执行批处理文件?【英文标题】:how to execute batch file from C/C++ w/o console window? 【发布时间】:2011-07-12 21:29:34 【问题描述】:我正在通过 system("start /B mybatch.bat")
调用从 C++ 程序执行批处理文件,其中 /B
应该在没有控制台窗口的情况下运行批处理文件。但它仍然可见。
编辑:我按照 cmets 中的建议通过 ShellExecute()
解决了这个问题
【问题讨论】:
【参考方案1】:你为什么不改用 CreateProcess 呢?
【讨论】:
或ShellExecute,这可能更简单。 @user:ShellExecute
不允许你传入STARTUPINFO
结构,它允许隐藏窗口。
@Ben Voigt:但它确实有 nShowCmd
。我不知道它是否适用于 OP,但我认为替代功能值得一提。
我使用system()
调用只是因为它非常简单。我没有看到这个调用控制台窗口,我看到了由start /B mybatch.bat
执行的批处理文件控制台窗口。这个标志应该在不创建新窗口的情况下运行命令:Start application without creating a new window. The application has ^C handling ignored. Unless the application enables ^C processing, ^Break is the only way to interrupt the application.
我是否误解了这个语句,是在同一个窗口中批量执行,而不是像start
命令通常那样启动单独的进程?【参考方案2】:
在 Windows 上,如果您不使用 Windows Runtime,可以尝试_popen
或_wpopen
:MSDN。
我使用它主要是因为_popen
创建了一个管道,因此我也可以轻松读取输出。
【讨论】:
以上是关于如何从没有控制台窗口的 C/C++ 执行批处理文件?的主要内容,如果未能解决你的问题,请参考以下文章
在运行时创建的控件没有窗口。无法从没有窗口的视图中显示弹出框
iBooks 打开 PDF -“无法从没有窗口的视图中呈现弹出窗口”
UITableViewController :“无法从没有窗口的视图中呈现弹出框。”
如何在 Eclipse 中将执行显示输出到远程 C++ 的控制台?
UIPopoverController & UIImagePickerControl:“无法从没有窗口的视图中呈现弹出框”