c# winform中怎么截获处理windows关闭的消息
c#   winform中怎么截获处理windows关闭的消息 
 有没有个专家给条名路?
------解决方案--------------------如果是VS2005的话,可以用如下的事件,这个事件是系统关闭或注销的时候发生的: 
 Microsoft.Win32.SystemEvents.SessionEnding 
------解决方案--------------------在窗口程序里,可以用WndProc来得到并处理Window系统注销或关闭的消息,如:   
 protected override void WndProc(ref Message m) 
 { 
 	if (m.Msg == 0x11)//WM_QUERYENDSESSION 
 	{   	 
 	} 
 	else if (m.Msg == 0x16)//WM_ENDSESSION 
 	{   		 
 	} 
 	base.WndProc(ref m); 
 }
------解决方案--------------------public class form1:System.Windows.Forms.Form,IMessageFilter 
 { 
     public bool PreFilterMessage(ref System.Windows.Forms.Message mm) 
     { 
        if(mm.Msg> =512&&mm.Msg <=515) 
        {return true;} 
        return false; 
      } 
 private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
 	{  			 
 	}   
 private void Form1_Load(object sender, System.EventArgs e) 
 	{ 
 		Application.AddMessageFilter(this); 
 	} 
 }
------解决方案--------------------如果你是要在窗口點關閉時,處理事情,那就可以在Form_Closing事件中寫代碼,取消關閉執行e.Cancel = true;就可。
------解决方案--------------------平民百姓说得没错,很久以前我也回答了一位CSDN上的朋友同样的问题,以下是阻止关机的代码: 
 		private const int WM_QUERYENDSESSION=0x0011; 
 		protected override void WndProc(ref Message m)		 
 		{ 
 			int i=0; 
 			switch(m.Msg) 
 			{ 
 				case WM_QUERYENDSESSION: 
 					m.Result=(IntPtr)i; 
 					break; 
 				default: 
 					base.WndProc(ref m); 
 					break; 
 			}  			 
 		} 
 --------------------------------- 
 当然你关了电源就没办法阻止了,不过还是可以在关机前保存数据的(在case WM_QUERYENDSESSION:处添加代码就行了)