最近发布了boost 1.64,其中包括boost::process。它提供了一个易于使用的界面来启动进程。以前我使用过独立版本的boost::process库(请参见此处)。这很有效。我想转换到新版本,以便可以取消独立库的依赖。
API有一点不同,但是一切都正常工作,除了一个问题。在旧版本中,我能够传递一个Windows特定的上下文对象,允许我隐藏任何由进程打开的控制台窗口。
使用新版本后,它的样子是这样的:
除了隐藏控制台窗口外,一切工作正常。是否有可能实现这一点?
API有一点不同,但是一切都正常工作,除了一个问题。在旧版本中,我能够传递一个Windows特定的上下文对象,允许我隐藏任何由进程打开的控制台窗口。
boost::process::win32_context ctx;
ctx.environment = boost::process::self::get_environment();
STARTUPINFOA stup;
ZeroMemory(&stup, sizeof(stup));
stup.cb = sizeof(stup);
stup.dwFlags = STARTF_USESHOWWINDOW;
stup.wShowWindow = SW_HIDE;
ctx.startupinfo = &stup;
std::vector<std::string> args;
boost::process:child process = boost::process::win32_launch("myprogram", args, ctx);
使用新版本后,它的样子是这样的:
boost::process::environment env = boost::this_process::environment();
boost::process:child process(boost::filesystem::path("myprogram"), env);
除了隐藏控制台窗口外,一切工作正常。是否有可能实现这一点?
bShowWindow
)来有条件地设置SW_HIDE
或SW_SHOW
,该怎么处理呢?我尝试了(bShowWindow) ? ::boost::process::windows::show : ::boost::process::windows::hide
,但它在child
构造参数中无法编译... - jpo38