Language:

Schließen eines Programms verhindern

Language: Deutsch
Programming Language: C#
Published by: AlexOnASP.NET
Last Update: 4/28/2006
Views: 1018

Description

Möchte man verhindern, daß eine Windows-Anwendung über den Close-Button (das x in der rechten oberen Ecke) oder die Taskleiste geschlossen wird, ist dies nicht ohne weiteres (also Properties o.ä.) möglich.

Man muß die Methode WndProc überschreiben und die Messages zum Form überwachen. Handelt es sich um das System-Kommando "SC_Close" (=0xF060), so darf die Message nicht an das Form weitergeleitet werden. Somit wird das Close-Command nicht verarbeitet, das Fenster bleibt geöffnet. Natürlich könnte man dem Fenster dann z.B. auch ein Minimize-Command unterschieben...

Der Code sieht wie folgt aus:

Code

1 public const int SC_CLOSE = 0xF060; 2 public const int WM_SYSCOMMAND = 0x0112; 3 4 protected override void WndProc(ref System.Windows.Forms.Message m) 5 { 6 if(!(m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)) 7 { 8 base.WndProc(ref m); 9 } 10 } 11

One comment

1

Hi,

dies kann man auch im Form_Closing Event des Forms erreichen:

if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
}
else
{
this.Close();
}

Monday, July 31, 2006 8:56:55 PM from langalaxy

Add a comment

Name *  

Email (won't be displayed) *    

Website  

Comment *  

Sicherheitscode Security Code *    

RSS