Ich sollte mal irgendwie ein Nopaste installieren um CodeSchnipsel hier zu hinterlassen.

Dieser Code prüft, ob das Programm manuell beendet wird oder wenn man z.B. den PC per Startmenü herunterfährt. Sinnvoll um evtl. Messageboxen zu unterlassen, die den Shutdown unterbrechen würden.

private bool _systemShutdown = false;
// false == Benutzer beendet Form
// true == System wird heruntergefahren
protected override void WndProc( ref Message m )
{
int WM_QUERYENDSESSION = 0x11;
if( m.Msg == WM_QUERYENDSESSION )
_systemShutdown = true;
base.WndProc (ref m);
} // WndProc

Der Code stammt aus dem Gerald Fauland aus dem Entwicklerforum.