1. 程式人生 > >C#一行程式碼實現(01)最小化到通知區域

C#一行程式碼實現(01)最小化到通知區域

# C#一行程式碼實現系列原創分享 ## 目錄 **初步計劃完成以下內容** 1. 視窗程式 1. 最小化到通知區域 1. [設定開機啟動](https://www.cnblogs.com/easynetwork/p/13867682.html) 1. [關閉視窗前彈出確認視窗](https://www.cnblogs.com/easynetwork/p/13867720.html) 1. [跨執行緒設定控制元件值,免去`InvokeRequired`通用方法1](https://www.cnblogs.com/easynetwork/p/13867963.html) 1. 跨執行緒設定控制元件值,免去`InvokeRequired`通用方法2 1. 跨執行緒獲取控制元件值,結合`BeginInvoke`和`EndInvoke`使用 1. 遍歷視窗所有控制元件 1. 執行CMD程式 1. 無視窗執行CMD程式 2. 註冊OCX控制元件 1. `App.Config`配置檔案讀寫 1. 讀`App.Config`引數 1. 寫`App.Config`引數 1. 繫結控制元件`Text`到`App.Config`引數 1. 登錄檔讀寫 1. 讀登錄檔 1. 寫登錄檔 1. 文字檔案讀寫 1. 讀文字檔案 1. 寫文字檔案 1. Win32API封裝 1. 通過`ClassName`和`WindowText`模糊查詢所有頂級視窗 1. 通過`ClassName`和`WindowText`模糊查詢視窗內所有子控制元件 1. 傳送訊息 1. 模擬點選其他程式視窗按鈕 1. 在其他程式視窗上模擬按鍵 1. 正常關閉其他視窗 1. 強制關閉其他視窗 1. 獲取視窗屬性 1. 修改視窗屬性 1. 獲取視窗位置和大小 1. 修改視窗位置和大小 1. 其他 1. 先列到這裡,未完待續…… ## 主要功能 - 實現`Winform`程式最小化後,隱藏工作列顯示,在通知區域顯示。左鍵點選通知區域圖示,可以彈出選單,包含`開機啟動`和`退出程式`,可以根據需求進行定製。 ## 一行程式碼 ``` private void Form1_Load(object sender, EventArgs e) { this.ExAddNotifyIcon(); } ``` ## 程式碼封裝 - 該方法已封裝在通用類庫`Sayaka.Common` - NuGet網址:https://www.nuget.org/packages/Sayaka.Common/ ```C# /// /// 新增通知圖示,左鍵點選切換視窗顯示,右鍵點選彈出選單 /// /// /// /// /// /// public static NotifyIcon ExAddNotifyIcon(this Form form, string tipText = "程式最小化至後臺執行,點選圖示顯示程式", int timeout = 3000, ToolTipIcon tipIcon = ToolTipIcon.Info) { NotifyIcon notifyIcon = new NotifyIcon(); notifyIcon.Icon = form.Icon; notifyIcon.Visible = true; notifyIcon.Text = form.Text; notifyIcon.BalloonTipText = form.Text; notifyIcon.MouseClick += (sender, args) => { if (args.Button == MouseButtons.Left) { if (!form.Visible) { form.Show(); form.WindowState = FormWindowState.Normal; form.TopMost = true; form.TopMost = false; } else { form.WindowState = FormWindowState.Minimized; form.Hide(); } } }; notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] { new MenuItem("開機啟動", (sender, args) => { ((MenuItem) sender).Checked = form.ExSwitchRunOnSystemStart(); }) { Checked = form.ExIsRunOnSystemStart() }, new MenuItem("退出程式", (sender, args) => { form.Close(); }), }); form.SizeChanged += (sender, args) => { if (form.WindowState == FormWindowState.Minimized) { form.Hide(); notifyIcon.ShowBalloonTip(timeout, form.Text, tipText, tipIcon); } }; form.FormClosed += (sender, args) => { notifyIcon.Dispose(); }; return notifyIcon; } ``` ## 宣告 - 文章作者:易幾施 - 部落格地址:https://www.cnblogs.com/easynetwork/ - 版權宣告:文章遵循[創作共用版權協議](http://creativecommons.org/licenses/by-nc/3.0/deed.en),署名、非商業、保持一致,轉載請註明