C# C# Konsolenanwendung -> Cancel Close Event

Dieser handler ist nur für ctrl+c, um nicht über das X schließen zu können ist das EnableCloseButton(false). Bei mir hat das wunderbar funktioniert, ich konnte nur noch über den Debugger (oder halt task manager) beenden, nicht jedoch über den "normalen" weg.
 
Es gibt ein spezielles Event hierfür, benutze ich in einigen meiner Apps.
Kann heute Abend mal nachkucken wenn ichs nicht vergesse. "Abbrechen" kann man den Exit nicht, aber man kann ihn ins unendliche verzögern ;)
Das wäre auf alle Fälle die Kernaussage.

mfg,
Max
 
Also NativeMethods.EnableCloseButton(false); kennt er bei mir nicht.
Muss ich da irgendwas machen?

Das mit der Endlosschleife müsste man sich ggf. mal angucken wie das gelöst ist :)
 
Bin gestern nimmer dazu gekommen.
Jedenfalls kannst du den "Beenden" Handler abfangen und dann sowas wie Application.DoThings bzw. DoSomething (oder wie das heißt) benutzen anstatt den Exit-Prozess weiter durchzuarbeiten.

mfg,
Max
 
also hier ist mal eine Lösung:


#region Console X Deaktivieren
private const int MF_BYCOMMAND = 0x00000000;
public const int SC_CLOSE = 0xF060;
[DllImport("user32.dll")]
public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags);
[DllImport("user32.dll")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();
#endregion


und das dann in der Main() aufrufen:

DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_CLOSE, MF_BYCOMMAND);
 
Zurück
Oben