C#捕捉windows關機事件,在系統關機前做一些自己想做的事的範例程式碼
C#捕捉windows關機事件,在系統關機前做一些自己想做的事;
有些時候我們可能想在Windows關機時記錄或處理一些事情,這裡提供幾種方法。
方法一:
/// <summary> /// 窗口过程的回调函数 /// </summary> /// <param name="m"></param> protected override void WndProc(ref Message m) { switch (m.Msg) { //此消息在OnFormClosing之前 case WindowsMessage.WM_QUERYENDSESSION: //MessageBox.Show("WndProc.WM_QUERYENDSESSION.我要阻止系统关闭!"); //this.Close(); //this.Dispose(); //Application.Exit(); m.Result = (IntPtr)1; //阻止Windows注销、关机或重启 break; default: break; } base.WndProc(ref m); }
方法二:
protected override void OnFormClosing(FormClosingEventArgs e) { switch (e.CloseReason) { case CloseReason.ApplicationExitCall: e.Cancel = true; MessageBox.Show("拦截关闭要求事件!"); break; case CloseReason.FormOwnerClosing: e.Cancel = true; MessageBox.Show("拦截自身关闭事件!"); break; case CloseReason.MdiFormClosing: e.Cancel = true; MessageBox.Show("拦截MDI窗体关闭事件!"); break; case CloseReason.None: break; case CloseReason.TaskManagerClosing: e.Cancel = true; MessageBox.Show("拦截任务管理器关闭事件!"); break; case CloseReason.UserClosing: //注销或关机会触发此事件; //MessageBox.Show("拦截用户关闭事件!"); e.Cancel = false; break; case CloseReason.WindowsShutDown: e.Cancel = true; MessageBox.Show("拦截关机事件!"); break; default: break; } base.OnFormClosing(e); }
方法三:
//当用户试图注销或关闭系统时发生。 SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding); //下面是系统注销或关闭事件处理程序, private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) { if (MessageBox.Show(this, "是否允许系统注销!", "系统提示", MessageBoxButtons.YesNo) != DialogResult.Yes) { e.Cancel = true; } else { e.Cancel = false; } SessionEndReasons reason = e.Reason; switch (reason) { case SessionEndReasons.Logoff: MessageBox.Show("用户正在注销。操作系统继续运行,但启动此应用程序的用户正在注销。"); break; case SessionEndReasons.SystemShutdown: MessageBox.Show("操作系统正在关闭。"); break; } } //如果把上面的事件处理程序修改成如下 //private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) // { // e.Cancel = true; // } //那会出现什么情况,你点击开始菜单关机选择注销、关机、或重新启动将会失效,电脑不能正常关机了,进一步的话把程序做成Windows服务,晕,恶作剧? //SessionEnded事件同上,事件参数类为SessionEndedEventArgs,同SessionEndingEventArgs相比少了Cancel属性,Cancel属性同一些windows下的某些事件差不多, 比如Form.Closing事件,Control.Validating事件。 //补充,如果需要获取应用程序需要的系统信息,可以访问System.Windows.Forms.SystemInformation类,这也是一个很有用的类,它提供了一组静态属性。
以上是C#捕捉windows關機事件,在系統關機前做一些自己想做的事的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

C#和C 的歷史與演變各有特色,未來前景也不同。 1.C 由BjarneStroustrup在1983年發明,旨在將面向對象編程引入C語言,其演變歷程包括多次標準化,如C 11引入auto關鍵字和lambda表達式,C 20引入概念和協程,未來將專注於性能和系統級編程。 2.C#由微軟在2000年發布,結合C 和Java的優點,其演變注重簡潔性和生產力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注於開發者的生產力和雲計算。

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

在Laravel開發中,處理複雜的模型關係一直是個挑戰,特別是當涉及到多層級的BelongsToThrough關係時。最近,我在處理一個多級模型關係的項目中遇到了這個問題,傳統的HasManyThrough關係無法滿足需求,導致數據查詢變得複雜且低效。經過一番探索,我找到了staudenmeir/belongs-to-through這個庫,它通過Composer輕鬆安裝並解決了我的困擾。

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

C#.NET依然重要,因為它提供了強大的工具和庫,支持多種應用開發。 1)C#結合.NET框架,使開發高效便捷。 2)C#的類型安全和垃圾回收機制增強了其優勢。 3).NET提供跨平台運行環境和豐富的API,提升了開發靈活性。

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。
