C#一行程式碼實現系列原創分享
目錄
初步計劃完成以下內容
-
視窗程式
- 最小化到通知區域
- 設定開機啟動
- 關閉視窗前彈出確認視窗
- 跨執行緒設定控制元件值,免去
InvokeRequired
通用方法1 - 跨執行緒設定控制元件值,免去
InvokeRequired
通用方法2 - 跨執行緒獲取控制元件值,結合
BeginInvoke
和EndInvoke
使用 - 遍歷視窗所有控制元件
-
執行CMD程式
- 無視窗執行CMD程式
- 註冊OCX控制元件
-
App.Config
配置檔案讀寫- 讀
App.Config
引數 - 寫
App.Config
引數 - 繫結控制元件
Text
到App.Config
引數
- 讀
-
登錄檔讀寫
- 讀登錄檔
- 寫登錄檔
-
文字檔案讀寫
- 讀文字檔案
- 寫文字檔案
-
Win32API封裝
- 通過
ClassName
和WindowText
模糊查詢所有頂級視窗 - 通過
ClassName
和WindowText
模糊查詢視窗內所有子控制元件 - 傳送訊息
- 模擬點選其他程式視窗按鈕
- 在其他程式視窗上模擬按鍵
- 正常關閉其他視窗
- 強制關閉其他視窗
- 獲取視窗屬性
- 修改視窗屬性
- 獲取視窗位置和大小
- 修改視窗位置和大小
- 其他
- 通過
-
先列到這裡,未完待續……
主要功能
- 實現
Winform
程式最小化後,隱藏工作列顯示,在通知區域顯示。左鍵點選通知區域圖示,可以彈出選單,包含開機啟動
和退出程式
,可以根據需求進行定製。
一行程式碼
private void Form1_Load(object sender, EventArgs e)
{
this.ExAddNotifyIcon();
}
程式碼封裝
- 該方法已封裝在通用類庫
Sayaka.Common
- NuGet網址:https://www.nuget.org/packages/Sayaka.Common/
/// <summary>
/// 新增通知圖示,左鍵點選切換視窗顯示,右鍵點選彈出選單
/// </summary>
/// <param name="form"></param>
/// <param name="tipText"></param>
/// <param name="timeout"></param>
/// <param name="tipIcon"></param>
/// <returns></returns>
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/
- 版權宣告:文章遵循創作共用版權協議,署名、非商業、保持一致,轉載請註明出處。