標籤:style class blog code http tar
1 private const int SC_SCREENSAVE = 0xF140;2 private const int WM_QUERYENDSESSION = 0x0011;3 private bool IsScreenSave = false;4 private bool IsWindowStopClosing = false;
變數
不廢話,直接貼代碼,建構函式中
public XX{
1 // 獲得視窗控制代碼2 IntPtr hwnd = new WindowInteropHelper(this).Handle;3 // 在Win32視窗中顯示WPF的內容4 HwndSource src = HwndSource.FromHwnd(hwnd);5 //接收視窗訊息的處理常式實現(基於 System.Windows.Interop.HwndSourceHook 委託)6 src.AddHook(new HwndSourceHook(WndProc));
Register
}
1 /// <summary> 2 /// 重新WndProc 3 /// </summary> 4 /// <param name="hwnd">視窗控制代碼</param> 5 /// <param name="msg">訊息ID</param> 6 /// <param name="wParam">訊息的 wParam 值</param> 7 /// <param name="lParam">訊息的 lParam 值</param> 8 /// <param name="handled">指示該訊息是否已處理的值。如果該訊息已處理,請將值設定為 true;否則請將其設定為 false</param> 9 /// <returns></returns>10 private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)11 {12 if (msg == WM_QUERYENDSESSION)13 {14 using (var wcf = new KeFuServicesClient())15 {16 wcf.UpdateUserState(MainPanelWindow.ClientServiceID, UserStates.UnLine);17 }18 }19 return IntPtr.Zero;20 }
捕捉作業系統關機事件
.NET技術交流群 199281001 .歡迎加入。