Visual C++でWin32APIを使用して、Windowsサブシステムの下にコンソールを割り当て、AllocConsole
に書き込むプログラムを作成したいと思いますWriteConsole
。ただし、ユーザーがコンソールを閉じた場合、プロセスはバックグラウンドで実行され続ける必要があります。現状では、それを実現することはできません。コンソールのタイトルバーでXを押すと、プロセスは終了します。
これを行う特定の方法はありますか?
前もって感謝します!
Visual C++でWin32APIを使用して、Windowsサブシステムの下にコンソールを割り当て、AllocConsole
に書き込むプログラムを作成したいと思いますWriteConsole
。ただし、ユーザーがコンソールを閉じた場合、プロセスはバックグラウンドで実行され続ける必要があります。現状では、それを実現することはできません。コンソールのタイトルバーでXを押すと、プロセスは終了します。
これを行う特定の方法はありますか?
前もって感謝します!
重要なのは、ユーザーがコンソールを閉じようとしたときに発生するコンソール コントロール イベントに応答することです。その後、 FreeConsoleを呼び出してプログラムをコンソールから切り離し、コンソールを破棄できます。これにより、プログラムが実行され続けるはずです。
追加情報:
終了時にプロセスが終了した場合、HandlerRoutine
私の提案は期待どおりに機能しませんでした。その場合は、問題がある可能性があります。SC_CLOSE システム メッセージをフックしてFreeConsole
、メッセージを渡す前にフックを実行できます。ユーザーが Ctrl+C または Ctrl+Break を押した場合にどうなるかはわかりませんが、うまくいくかもしれません。
問題は、コントロール ハンドラがプロセスを終了することです。FreeConsole
での呼び出しHandlerRoutine
が遅すぎる可能性があります。