首页 > 编程语言 >C# 窗体 隐藏到托盘 开机自动启动 粘贴板 生成的EXE图标和名称

C# 窗体 隐藏到托盘 开机自动启动 粘贴板 生成的EXE图标和名称

时间:2024-03-21 14:59:39浏览次数:31  
标签:EXE notifyIcon textBox1 粘贴板 void System private C# using

1、隐藏到托盘

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
            {
                // 取消关闭操作,并隐藏窗体
                e.Cancel = true;
                this.Hide();

                // 在系统托盘区域显示 NotifyIcon 控件
                m_notifyIcon.Visible = true;
            }
        }

        private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                // 如果用户单击了 NotifyIcon 控件,则重新显示窗体
                this.Show();
                m_notifyIcon.Visible = false;
            }
        }

2、开机自动启动

        // 注册自动启动
        private void RegisterAutoStart()
        {
            RegistryKey rk = Registry.CurrentUser.OpenSubKey
                ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            rk.SetValue("MyApp", Application.ExecutablePath.ToString());
        }

        // 取消自动启动
        private void UnregisterAutoStart()
        {
            RegistryKey rk = Registry.CurrentUser.OpenSubKey
                ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            rk.DeleteValue("MyApp", false);
        }

3、获取粘贴板

        string builder =string.Empty;

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (Clipboard.GetText() == builder) return;

            textBox1.AppendText("\r\n"+datetime);
            textBox1.AppendText("\r\n");
            textBox1.AppendText("\r\n" + Clipboard.GetText());
            textBox1.AppendText("\r\n");

            builder = Clipboard.GetText();
        }

4、生成EXE图标和名称

(矢量图 是从阿里矢量图获取 iconfont-阿里巴巴矢量图标库

5、全部程序

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinFrmClipboardTool
{
    public partial class Form1 : Form, IDisposable
    {
        private NotifyIcon m_notifyIcon;

        public Form1()
        {
            InitializeComponent();

            // 初始化 NotifyIcon 控件
            m_notifyIcon = new NotifyIcon();
            m_notifyIcon.Icon = this.Icon;
            m_notifyIcon.Text = this.Text;
            m_notifyIcon.MouseClick += notifyIcon_MouseClick;

            RegisterAutoStart();

            textBox1.ScrollBars = ScrollBars.Vertical;


            // 添加右键菜单项
            ContextMenu menu = new ContextMenu();
            menu.MenuItems.Add("退出", (sender, e) =>
            {
                // 点击退出菜单时关闭应用程序
                Application.Exit();
            });

            m_notifyIcon.ContextMenu = menu;
        }

        string builder =string.Empty;

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (Clipboard.GetText() == builder) return;

            textBox1.AppendText("\r\n******************************************************************************************************************");
            textBox1.AppendText("\r\n");
            textBox1.AppendText("\r\n" + Clipboard.GetText());
            textBox1.AppendText("\r\n");

            builder = Clipboard.GetText();
        }

        // 注册自动启动
        private void RegisterAutoStart()
        {
            RegistryKey rk = Registry.CurrentUser.OpenSubKey
                ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            rk.SetValue("MyApp", Application.ExecutablePath.ToString());
        }

        // 取消自动启动
        private void UnregisterAutoStart()
        {
            RegistryKey rk = Registry.CurrentUser.OpenSubKey
                ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            rk.DeleteValue("MyApp", false);
        }

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
            {
                // 取消关闭操作,并隐藏窗体
                e.Cancel = true;
                this.Hide();

                // 在系统托盘区域显示 NotifyIcon 控件
                m_notifyIcon.Visible = true;
            }
        }

        private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                // 如果用户单击了 NotifyIcon 控件,则重新显示窗体
                this.Show();
                m_notifyIcon.Visible = false;
            }
        }

    }
}

标签:EXE,notifyIcon,textBox1,粘贴板,void,System,private,C#,using
From: https://blog.csdn.net/m0_61642614/article/details/136906304

相关文章

  • 写论文也能嘎嘎香?用ChatGPT轻松搞定
    一、背景⭐⭐⭐点击直达⭐⭐⭐自从我开始用ChatGPT帮我写论文,效率简直翻了个倍,论文质量大大提升,还有更多时间去享受生活,真是嘎嘎香~二、简介注册即送ChatGPT3.5和4.0版本,每天都有免费使用次数,快来一起薅羊毛吧!三、功能介绍AI-3.5:搞定日常学术对话,满足你的大部分需求......
  • 实战6-某企业钢铁资源-webpack
    目标网站aHR0cHM6Ly9uZXdzLmJhb3d1Z3JvdXAuY29tL2xpc3Q/aWQ9MTQyNw==1.简单介绍webpackWebpack是一个用于构建现代Web应用程序的静态模块打包工具。通过将应用程序的所有资源(例如JavaScript、CSS、图片等)视为模块,并使用依赖关系来管理它们之间的引用,将它们打包成一个或多个......
  • Educational Codeforces Round 163 (Rated for Div. 2)
    Preface这周很奇怪,连着计网、数据库、组合数学的课都莫名其妙不上了,突然变得很空闲了的说正好有空赶紧补补题,不然接下来有很多造题/比赛的任务搁置着就忘记了A.SpecialCharacters签到,\(n\)是偶数才有解,构造的话注意到一个AAB可以产生\(2\)的贡献,把\(\frac{n}{2}\)个AAB拼起......
  • SpringCloud 使用feign进行文件MultipartFile传输
    SpringCloud组件fiegn默认是不支持传递文件的。但是提供了feign-form扩展工具解决方法:步骤一:在消费者服务中加入相关pom依赖。<!--解决SpringCloud组件feign默认是不支持传递文件的--><dependency><groupId>io.github.openfeign.form</groupId>......
  • 收藏一个不错的cssscript特效网站
    css水波浪效果demohttps://www.cssscript.com/demo/animated-waves-svg/  waves-animation/demohttps://www.cssscript.com/waves-animation/ ......
  • BigDecimal
    3.BigDecimal3.1介绍BigDecimal是Java在java.math包中提供的线程安全的API类。用于解决小数运算中,出现的不精确问题3.2创建对象BigDecimal所创建的是对象,故我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须......
  • 代码随想录算法训练营day29 | leetcode 491. 非递减子序列、46. 全排列、47. 全排列 I
    目录题目链接:491.非递减子序列-中等题目链接:46.全排列-中等题目链接:47.全排列II-中等题目链接:491.非递减子序列-中等题目描述:给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重......
  • 通俗易懂解释python和anaconda和pytorch以及pycharm之间的关系
    Python:Python就像是一门编程语言的工具箱,你可以把它看作是一种通用的编程语言,就像是一把多功能的工具刀。你可以使用Python来编写各种类型的程序,就像使用工具刀来制作各种不同的手工艺品一样。Anaconda:Anaconda就像是一个装有不同种类工具的大工具箱。这个工具箱里包括了Py......
  • Ceres简单使用
    用Ceres解决最小二乘问题步骤一般是这样我们要先建立一个最小二乘问题;(代码中就是构建一个用Problem类构建一个problem对象)接着我们需要建立代价函数costFunction。(如果是用AutoDiff自动求解,用法是这样的:AutoDiffCostFunction<仿函数类,残差的维度,剩下的一堆是优化变量的维度>);我......
  • Objects
    Object类介绍:所有的类,都直接或者间接的继承了Object类(祖宗类)Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。常用方法:方法名说明publicStringtoString()默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址publicBo......