ImageMagick を使用して PDF を JPG に変換しています。この変換の実行には数百ミリ秒かかるため、プロセス ハンドルでWaitForSingleItemを待機させています。
残念ながら、プロセスはほとんどすぐに終了し、変換は完了しません (ハンドルが閉じられたために中断されたと思います)。同期動作が必要です。
プロセスに出力パイプが接続されていますが、プロセスが「OK、完了、すべてを閉じて次に進む」と判断するため、エラーなどの出力はまったく得られません。
集中力の低い操作では、エラー、出力など、すべてが期待どおりに機能します。問題はほぼ確実に待っていると思います。
誰かがこれを修正する方法について提案できますか? 適用可能なコードをいくつか示しますが、おそらくあまり役に立ちませんが、他のすべてが正常に機能するため、重要な部分はこれだけです。
コードを実行すると、メッセージが表示されますWAIT_OBJECT_0
。
if (!CreateProcess(
NULL,
(LPSTR) "convert test.pdf test.jpg",
NULL,
NULL,
TRUE,
CREATE_NO_WINDOW,
NULL,
NULL,
&si,
&pi
)) { console_->AddItem("ERROR: Failed to create process."); }
DWORD wait = WaitForSingleObject(pi.hProcess, INFINITE);
if (wait == WAIT_ABANDONED) { MessageBox(NULL, "WAIT_ABANDONED", "Alert", MB_OK); }
else if (wait == WAIT_OBJECT_0) { MessageBox(NULL, "WAIT_OBJECT_0", "Alert", MB_OK); }
else if (wait == WAIT_TIMEOUT) { MessageBox(NULL, "WAIT_TIMEOUT", "Alert", MB_OK); }
else if (wait == WAIT_FAILED) { MessageBox(NULL, "WAIT_FAILED", "Alert", MB_OK); }
else { MessageBox(NULL, "END OF THE WORLD", "Alert", MB_OK); }