It is possible to prevent a system shutdown from within your C# apps. Basically the premise is as follows:
Override the WndProc event so that when a system shutdown event gets fired onto your app, block it with a messagebox saying: ‘Hey! I’m still working over here!’
The code is as follows:
private const int WM_QUERYENDSESSION=0x0011;private bool isShuttingDown=false;protected override void WndProc(ref Message m){if(m.Msg==WM_QUERYENDSESSION){isShuttingDown=true;}base.WndProc(ref m);}private void frmLogin_Closing(object sender, System.ComponentModel.CancelEventArgs e){if(isShuttingDown){if(MessageBox.Show(this,"The application is still running, are you sure you want to exit?","Confirm Closing by Windows Shutdown",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==System.Windows.Forms.DialogResult.Yes){e.Cancel=false;}elsee.Cancel=true;}}
The code identifies the ‘shutdown'(Query End Session ) event and isolates it so that it can be blocked