执行控制台应用程序而不创建在屏幕上闪烁的新控制台窗口(C ++,Windows)

时间:2010-07-14 23:24:16

标签: c++ windows console window

我正在编写一个Windows应用程序,我需要从中运行一些控制台应用程序并获取它们的输出。我尝试了两种不同的方法:

1)使用_popen(命令,“rt”) 2)使用重定向输出创建子进程(CreateProcess(),CreatePipe())

它们都有效,但在执行某些命令时会创建一个新的控制台窗口,这非常令人不愉快和丑陋。有没有办法在后台执行命令而无需打开新的控制台?

2 个答案:

答案 0 :(得分:3)

您可以使用libexecstream

它允许您运行控制台程序并使用流读取它们的输出。

如网站所述:

  • 适用于Linux和Windows
  • 使用线程
  • 不依赖于任何其他非标准库
  • 仅作为源代码分发,需要您编译并将一个文件链接到您的程序
  • 有BSD风格的license

我可以补充说,我已经在最近的项目中成功使用了它,并且没有出现任何恶意的控制台窗口。

答案 1 :(得分:3)

您可能想尝试将CREATE_NO_WINDOWDETACHED_PROCESS标记传递给CreateProcess