Windows でコンソール エミュレーターを作成したいと考えています。GUI アプリケーションから cmd.exe (SW_HIDE を使用) を起動し、AttachConsole を実行する必要があります。
// cmdline is a writable L"cmd"
// start_info contains a SW_HIDE
PROCESS_INFORMATION proc_info;
CreateProcess(NULL, cmdline, NULL, NULL, false, 0, NULL, NULL, &start_info, &proc_info);
AttachConsole(proc_info.dwProcessId);
しかし、AttachConsole は ERROR_GEN_FAILURE (31) で失敗します。これは、「指定されたプロセスが存在しない」ことを示します。
Sleep(100);
CreateProcess が戻ったとき、 AttachConsole の前に a を追加すると問題が解決するため、cmd.exe のコンソールが完全に初期化されていないようです。
では、乱数をスリープさせずに AttachConsole を使用できるようになるまで、どのように待つことができるでしょうか?