1

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 を使用できるようになるまで、どのように待つことができるでしょうか?

4

2 に答える 2

0

AttachConsole が ERROR_GEN_FAILURE を返している間にループすることができます

于 2015-12-29T08:50:41.907 に答える