C++でRPG風のCUIアプリケーションを作成しています。
ユーザーがサインアウトまたはシャットダウンを行おうとしたことを検知し、一旦サインアウトを中止しユーザーにプログラムの正常終了を促すにはどうしたらよいのでしょうか。
(ガチャ要素などがあり、リセマラの防止などの観点で)
https://qiita.com/gocha/items/38e2301db ... ウトしてしまいました。
イメージとしては、いったんプログラムのウィンドウに戻って、正常終了処理を行い、system関数から自動的にサインアウト~というのをイメージしています。
開発環境はVisualStudio2017でC++のWin32コンソールアプリケーションです。
C++でサインアウトを検知したい
Re: C++でサインアウトを検知したい
see) Shutdown Changes for Windows Vista | Microsoft Docs
おそらく,Log offもキャンセルできないかと。
さらに,Best Practicesには
そもそもの目的を考えると,Log offやShutdownでキャンセルできるような仕組みが問題です。
で,ユーザーがそれが可能であるのは,結果が確定されるのが,結果が表示された後になるからだと思います。
結果を生成した直後に確定し,その後に結果を表示すればよいのではないでしょうか。
というわけで,Console ApplicationはShutdownをキャンセルできません。Canceling shutdown | Note that the system does not allow console applications or applications without a visible window to cancel shutdown.
おそらく,Log offもキャンセルできないかと。
さらに,Best Practicesには
とあり,Log offやShutdownの中止に依存するようなプログラムは推奨されません。Applications cannot rely on being able to block shutdown.
そもそもの目的を考えると,Log offやShutdownでキャンセルできるような仕組みが問題です。
で,ユーザーがそれが可能であるのは,結果が確定されるのが,結果が表示された後になるからだと思います。
結果を生成した直後に確定し,その後に結果を表示すればよいのではないでしょうか。