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/
- 版权声明:文章遵循创作共用版权协议,署名、非商业、保持一致,转载请注明出处。