C#实现winform软件开机自动启动并最小化到系统托盘

### C#实现Winform软件开机自动启动并最小化到系统托盘 在Windows平台上开发桌面应用时,我们经常需要让应用程序在系统启动时自动运行,并且可以最小化至任务栏通知区域(通常称为系统托盘),以便用户可以方便地访问程序而不会占用主屏幕空间。本文将详细介绍如何通过C#语言结合Winforms框架来实现这一功能。 #### 一、开机自启动功能实现 开机自启动主要涉及到注册表的操作。Windows系统中有一个专门用于管理开机启动项的注册表路径:`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run`。当程序被添加到该路径下时,它就会在每次系统启动时自动运行。 **关键代码片段:** ```csharp // 检查并设置开机启动状态 private void SetStartup(bool enable) { string appName = "BirthdayTipF"; // 自定义的应用名称 string appPath = Application.ExecutablePath; using (RegistryKey r_local = Registry.LocalMachine) using (RegistryKey r_run = r_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")) { if (enable) { // 设置开机启动 r_run.SetValue(appName, appPath); } else { // 取消开机启动 r_run.DeleteValue(appName, false); } } } // 与开机启动相关的CheckBox事件处理 private void checkBox1_CheckedChanged(object sender, EventArgs e) { bool isChecked = checkBox1.Checked; SetStartup(isChecked); } ``` **解释:** 1. **SetStartup方法:** 这个方法接受一个布尔值参数,根据该值来决定是否设置或取消开机启动。 2. **checkBox1_CheckedChanged事件:** 当CheckBox的状态发生改变时触发此事件,进而调用`SetStartup`方法更新注册表中的设置。 #### 二、最小化到系统托盘 为了让程序能够在最小化时显示在系统托盘,我们需要使用`System.Windows.Forms.NotifyIcon`类来创建一个托盘图标。此外,还需要处理窗口大小变化事件,以便在窗口最小化时隐藏主窗体,并显示托盘图标。 **关键代码片段:** ```csharp // 在Form构造函数中初始化托盘图标 public Form1() { InitializeComponent(); // 设置托盘图标 notifyIcon1.Icon = new Icon("icon.ico"); // 使用自定义图标 notifyIcon1.Text = "Birthday Tip"; notifyIcon1.Visible = true; // 默认可见 notifyIcon1.Click += new EventHandler(notifyIcon1_Click); // 注册窗口大小变化事件 this.SizeChanged += new EventHandler(Form1_SizeChanged); } // 窗口大小变化时的处理 private void Form1_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.Hide(); // 隐藏主窗体 notifyIcon1.Visible = true; // 显示托盘图标 } else { this.Show(); // 恢复显示主窗体 notifyIcon1.Visible = false; // 隐藏托盘图标 } } // 托盘图标的点击事件 private void notifyIcon1_Click(object sender, EventArgs e) { this.Visible = true; this.WindowState = FormWindowState.Normal; this.notifyIcon1.Visible = false; } ``` **解释:** 1. **托盘图标初始化:** 在`Form1`的构造函数中初始化托盘图标,并设置其图标、文本以及点击事件处理。 2. **窗口大小变化事件:** 监听窗口大小变化事件,在窗口最小化时隐藏主窗体并显示托盘图标;反之,则显示主窗体并隐藏托盘图标。 3. **托盘图标点击事件:** 当用户点击托盘图标时,恢复显示主窗体,并隐藏托盘图标。 #### 总结 以上就是如何使用C#语言结合Winforms框架实现应用程序开机自启动以及最小化到系统托盘的功能。这些技术对于开发需要长期后台运行或者希望在系统启动时就准备就绪的应用程序来说非常有用。通过上述代码示例,开发者可以根据自己的需求进行调整和优化,以满足实际项目的需要。














拖一个CheckBox
1、软件启动时给CheckBox重置状态:
RegistryKey R_local = Registry.LocalMachine;
RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
if (R_run.GetValue("BirthdayTipF") == null)
{
checkBox1.Checked = false;
}
else
{
checkBox1.Checked = true;
}
R_run.Close();
R_local.Close();
2、CheckChanged事件:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
string R_startPath = Application.ExecutablePath;
if (checkBox1.Checked == true)
{
RegistryKey R_local = Registry.LocalMachine;
RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
R_run.SetValue("BirthdayTipF", R_startPath);
R_run.Close();

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 一个简单的几何图像识别专家系统,基于C++,QT 根据github中某python项目的重写
- lilishop 商城 java商城-C语言资源
- lenosp-C++资源
- eova-Java资源
- vn.py-Python资源
- EFQRCode-Swift资源
- MATLAB-Matlab资源
- 利用灰度对图像进行识别
- springboot-openai-chatgpt-机器人开发资源
- Kotlin-lite-lib-Kotlin资源
- IntelliFlow-AI人工智能资源
- Rudis-Rust资源
- 智能环境助手-硬件开发资源
- 计算机系统基础课程实验之数据实验项目-位操作函数实现与规则检查-用于学生通过修改bitsc文件完成位运算任务并通过btest测试-涉及Makefile构建系统dlc规则检查编译.zip
- maku-admin-Typescript资源
- DAC0832是常用的8位数模转换器



- 1
- 2
- 3
- 4
- 5
- 6
前往页