CreateProcess(...)を使用してプロセスを実行し、別のコンソールウィンドウで個別に実行しようとしています。
system( "...")関数を使用してこれを実現できますが、CreateProcessを使用すると、環境と作業ディレクトリを指定したり、プロセスのハンドルを取得したり、必要に応じてstdin/outをパイプしたりできるので好まれます。に。
私がインターネットで見つけたのは逆問題です。それは、追加のコンソールウィンドウを持っていて、それらを取り除きたいという人々です。以前のバージョンのWindowsでは、新しいコンソールウィンドウを開いて表示するのは正常な動作だったようです。
現在、「cmd.exe / c ...」を実行しても、追加のウィンドウを取得できません。
STARTF_USESHOWWINDOWフラグを使用してみましたが運がありませんでした。
誰かがこの問題を抱えていましたか?
PS:GUIウィンドウが表示されます。notepad.exeが正常に表示されます。
これは私のコードです(本質的に)
PROCESS_INFORMATION processInfo;
STARTUPINFOA startupInfo;
ZeroMemory(&startupInfo,sizeof(startupInfo));
startupInfo.dwFlags |= CREATE_NEW_CONSOLE;
startupInfo.dwFlags |= DETACHED_PROCESS;
ok&=CreateProcessA( NULL,
const_cast<char*>(comand.c_str()), // safe for CreateProcessA
NULL, NULL, TRUE, NULL, NULL, NULL,
&startupInfo, &processInfo);
C:/Windows/system32/cmd.exe / c helpを実行しようとしています。プログラムが実行され、パイプからの出力を読み取ることができます。まだウィンドウがありません。