1

Visual C++でWin32APIを使用して、Windowsサブシステムの下にコンソールを割り当て、AllocConsoleに書き込むプログラムを作成したいと思いますWriteConsole。ただし、ユーザーがコンソールを閉じた場合、プロセスはバックグラウンドで実行され続ける必要があります。現状では、それを実現することはできません。コンソールのタイトルバーでXを押すと、プロセスは終了します。

これを行う特定の方法はありますか?

前もって感謝します!

4

1 に答える 1

3

重要なのは、ユーザーがコンソールを閉じようとしたときに発生するコンソール コントロール イベントに応答することです。その後、 FreeConsoleを呼び出してプログラムをコンソールから切り離し、コンソールを破棄できます。これにより、プログラムが実行され続けるはずです。

追加情報:

終了時にプロセスが終了した場合、HandlerRoutine私の提案は期待どおりに機能しませんでした。その場合は、問題がある可能性があります。SC_CLOSE システム メッセージをフックしてFreeConsole、メッセージを渡す前にフックを実行できます。ユーザーが Ctrl+C または Ctrl+Break を押した場合にどうなるかはわかりませんが、うまくいくかもしれません。

問題は、コントロール ハンドラがプロセスを終了することです。FreeConsoleでの呼び出しHandlerRoutineが遅すぎる可能性があります。

于 2012-10-31T22:39:55.747 に答える