boost :: processを含む最近boost 1.64がリリースされました。これにより、プロセスを開始するための簡単なインタフェースが提供されます。以前は、boost :: processライブラリのスタンドアロン版を使用しました(hereを参照)。これはうまくいった。私はスタンドアロンの依存関係を取り除くことができるように、新しい版に変更したいと思います。Boost :: processウィンドウでコンソールを非表示にする
APIは少し異なりますが、すべてのものは問題なく動作します。古いバージョンでは、ウィンドウ固有のコンテキストオブジェクトを渡すことができました。これにより、プロセスによって開かれたコンソールウィンドウを隠すことができました。
boost::process::environment env = boost::this_process::environment();
boost::process:child process(boost::filesystem::path("myprogram"), env);
すべてはコンソールウィンドウを隠すため除いて正常に動作します:それはこのようになります新しいバージョンを使用して
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);
。これを達成することは可能ですか?
これは古いライブラリよりもずっと良いです! –
原則として、setups/error/successハンドラは(逆の)順序で呼び出されることが期待できます。つまり、ライブラリやエクステンションが特定の重要な内部ロジックに対してそのロジックを特に上書きしない限り。 – sehe
@VTT:SW_HIDEまたはSW_SHOWを条件設定するためにブール値( 'bShowWindow')を取得した場合、これをどのように処理できますか?私は '(bShowWindow)を試した? :: boost :: process :: windows :: show :: boost :: process :: windows :: hide'しかし、それは '子の'構築引数としてコンパイルされません... – jpo38