setconsolehandler()
コンソールの終了イベントを管理する場合は、を使用する必要があることを知っています。
をブロックする方法がわかりませんCTRL_CLOSE_EVENT
。そのイベントをキャッチした場合、false / trueを返そうとしましたが、成功しませんでした
これが私がこれまでに持っているものです(アントン・ゴゴレフに感謝します!)
[DllImport("Kernel32")]
public static extern bool SetConsoleCtrlHandler(HandlerRoutine Handler, bool Add);
public delegate bool HandlerRoutine(CtrlTypes CtrlType);
public enum CtrlTypes{
CTRL_C_EVENT = 0,
CTRL_BREAK_EVENT,
CTRL_CLOSE_EVENT,
CTRL_LOGOFF_EVENT = 5,
CTRL_SHUTDOWN_EVENT
}
private static bool ConsoleCtrlCheck(CtrlTypes ctrlType)
{
if(ctrlType == CtrlTypes.CTRL_CLOSE_EVENT)
return false;// I have tried true and false and viceversa with the return
// true/false but I cant seem to get it right.
return true;
}
//and then I use this to call it
SetConsoleCtrlHandler(new HandlerRoutine(ConsoleCtrlCheck), true);
また、新しいスレッドを実行してコンソールが閉じているかどうかを監視し、メインスレッドが何かを実行している途中でその閉じをブロックすることは可能ですか?