private static bool ConsoleCtrlCheck(CtrlTypes ctrlType) { switch (ctrlType) { case CtrlTypes.CTRL_C_EVENT: Console.WriteLine("CTRL+C received!"); break; case CtrlTypes.CTRL_BREAK_EVENT: Console.WriteLine("CTRL+BREAK received!"); break; case CtrlTypes.CTRL_CLOSE_EVENT: Console.WriteLine("Program being closed!"); break; case CtrlTypes.CTRL_LOGOFF_EVENT: case CtrlTypes.CTRL_SHUTDOWN_EVENT: Console.WriteLine("User is logging off!"); break; } onExitAction(); ConsoleImports.FreeConsole(); return(true); }
public void OpenConsole(Action <bool> switchOn) { var opened = ConsoleImports.AllocConsole(); while (!opened) { ConsoleImports.FreeConsole(); opened = ConsoleImports.AllocConsole(); } IntPtr hwnd = ConsoleImports.GetConsoleWindow(); IntPtr hmenu = ConsoleImports.GetSystemMenu(hwnd, false); uint hWindow = ConsoleImports.EnableMenuItem(hmenu, SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); ConsoleImports.DeleteMenu(hmenu, SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); switchOn(false); }