Windows系统简易操作工具箱

news2024/11/23 3:00:36

Windows系统简易操作工具箱

目录

    • Windows系统简易操作工具箱
  • 前言
  • 一、发展过程
    • 1.1 版本更新
    • 1.2功能开发
    • 1.3版本展示
  • 二、Windows简易工具箱设计
    • 2.1登录界面
    • 2.2 窗体显示信息
    • 2.3 窗体中文乱码
    • 2.4 TabPage美化
    • 2.5 界面统一化处理
  • 三、设计结果验证
  • 总结


前言

    在日常使用Windows系统的过程中,经常会被同事或朋友请求修复电脑问题,于是心血来潮,根据这么多年来的使用体验和感悟,制作了这款免费可使用的简易小工具,同时也作为第一次接触C#学习成果的验收,于是一款基于.NET 的Windows系统简易操作工具箱应运而生。

提示:以下是本篇文章正文内容,下面案例仅供参考

一、发展过程

1.1 版本更新

  该软件的设计经历了从最初1.0版本的设计构想,到2.0版本的图形化GUI设计,从2.0版本的雍容和界面单一到3.0版本的界面统一,从3.0版本的界面统一到界面的进一步美化,同时版本进行了相应的漏洞修复,加入了数字自签名,添加了界面显示信息和自动清除,软件在线安全下载等功能,基本上解决了中文编码乱码问题。

图1 版本更新
图2 更新过程
图3 更新过程

1.2功能开发

   2.0版本只设计了一个主界面,只保证功能可以正常使用,其他界面不统一,界面不够美观。3.0版本逐步针对2.0版本边修复漏洞边添加新功能。3.2版本之后主要解决不同平台的适配问题,开发了针对X86,X64,ARM64平台的专用版本,3.3版本之后加入了数字签名,由于是自己制作的签名,所以需要用户手动安装,目的是防止Windows的安全防护无缘无故的报毒问题,同时给软件一个相应的身份证。

1.3版本展示

图4版本展示
图5版本展示
图6版本展示
图7版本展示
图8版本展示
图9版本展示

二、Windows简易工具箱设计

2.1登录界面

登录界面进行了输入隐藏显示,三次密码输入错误自动退出,错误提示弹窗自动等功能。

在这里插入图片描述
代码如下:

自动关闭弹窗提示
 // 查找窗口
 [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
 private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

 // 发送消息
 [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
 private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

 // 关闭消息
 private const uint WM_CLOSE = 0x0010;
 

 // 创建一个线程来执行倒计时操作
    
    .......


 // 查找并关闭MessageBox窗口
     private void CloseMessageBox()
 {
     
     IntPtr MMMX = FindWindow(null, "SimpleToolBox");
     if (MMMX != IntPtr.Zero)
     {
         SendMessage(MMMX, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
     }
 }
密码隐藏
     private void main_Load(object sender, EventArgs e)
     {
         //textBox1.ReadOnly = true;
         textBox1.UseSystemPasswordChar = true;
         //textBox2.ReadOnly = true;
         textBox2.UseSystemPasswordChar = true;
     }
开启相应的LostFocus和GotFocus功能
  // textBox2
  // 
  this.textBox2.Location = new System.Drawing.Point(92, 18);
  this.textBox2.Margin = new System.Windows.Forms.Padding(2);
  this.textBox2.Name = "textBox2";
  this.textBox2.Size = new System.Drawing.Size(124, 25);
  this.textBox2.TabIndex = 1;
  this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged_1);
  this.textBox2.GotFocus += new System.EventHandler(this.textBox2_GotFocus);
  this.textBox2.LostFocus += new System.EventHandler(this.textBox2_LostFocus);
  // 
  
 // textBox1
 // 
 this.textBox1.Location = new System.Drawing.Point(92, 24);
 this.textBox1.Margin = new System.Windows.Forms.Padding(2);
 this.textBox1.Name = "textBox1";
 this.textBox1.Size = new System.Drawing.Size(124, 25);
 this.textBox1.TabIndex = 1;
 this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
 this.textBox1.GotFocus += new System.EventHandler(this.textBox1_GotFocus);
 this.textBox1.LostFocus += new System.EventHandler(this.textBox1_LostFocus);
 // 
  textBox代码
private void textBox1_LostFocus(object sender, EventArgs e)
{
    if (textBox1.Text == "")
    {
        textBox1.Text = "用户名已隐藏";
        textBox1.ForeColor = Color.Gray;
        //textBox1.ReadOnly = true;
        textBox1.UseSystemPasswordChar = true;
    }
    else
    {
        //textBox1.ReadOnly = true;
        textBox1.UseSystemPasswordChar = true;
        textBox1.ForeColor = Color.Black;
    }
}
private void textBox1_GotFocus(object sender, EventArgs e)
{
    if (textBox1.Text == "用户名已隐藏")
    {
        textBox1.Text = "";
        // textBox1.ReadOnly = true;
        textBox1.UseSystemPasswordChar = true;
        textBox1.ForeColor = Color.Black;
    }
}
private void textBox2_LostFocus(object sender, EventArgs e)
{
    if (textBox2.Text == "")
    {
        textBox2.Text = "密码已隐藏";
        textBox2.ForeColor = Color.Gray;
        // textBox2.ReadOnly = true;
        textBox2.UseSystemPasswordChar = true;
    }
    else
    {
        //textBox2.ReadOnly = true;
        textBox2.UseSystemPasswordChar = true;
        textBox2.ForeColor = Color.Black;
    }
}
private void textBox2_GotFocus(object sender, EventArgs e)
{
    if (textBox2.Text == "密码已隐藏")
    {
        textBox2.Text = "";
        //textBox2.ReadOnly = true;
        textBox2.UseSystemPasswordChar = true;
        textBox2.ForeColor = Color.Black;
    }
}

2.2 窗体显示信息

执行处理的信息,返回给窗体,在窗体中显示,超过一定时间自动清除。

在这里插入图片描述

IP地址查询代码
 try
 {
     string ipAddress = textBox1.Text;
     // 创建ProcessStartInfo对象,设置要执行的命令及参数
     ProcessStartInfo startInfo = new ProcessStartInfo();
 startInfo.FileName = "ping.exe";//要执行的命令
 startInfo.Arguments = $"-n 1 {ipAddress}";
 startInfo.UseShellExecute = false;//不使用外壳程序执行
 startInfo.RedirectStandardOutput = true;//将输出重定向到Process.StandardOutput属性
 startInfo.CreateNoWindow = true;//不创建新的窗口
                                 //创建并启动进程
 using (Process process = new Process())
 {
     process.StartInfo = startInfo;
     process.Start();
     //读取进程的输出
     string output = process.StandardOutput.ReadToEnd();
     //在窗体中显示输出结果
     richTextBox1.Text = output;
     Console.ReadLine();
     richTextBox1.Text = output;

 }

 }
 catch (Exception ex)
 {
     MessageBox.Show("SimpleToolBox:" + ex.Message);
 }

2.3 窗体中文乱码

执行操作返回的数据编码一般为GBK编码,而RichTextBox编码为UTF-8编码,因为在接收信息时,会出现中文乱码情况。

在这里插入图片描述

缓和解决方案
    using (Process process = new Process())
    {
        process.StartInfo = startInfo;
        process.Start();
        //读取进程的输出
        string output = process.StandardOutput.ReadToEnd();
        byte[] gbkBytes = Encoding.GetEncoding("GBK").GetBytes(output);
        string utf8String = Encoding.UTF8.GetString(gbkBytes);
        //在窗体中显示输出结果
        richTextBox1.Text = utf8String;
        Console.ReadLine();
        richTextBox1.Text = utf8String;

    }

2.4 TabPage美化

TabPage选项卡添加图标,显示字体大小。

在这里插入图片描述

代码如下:

 private void tabControl1_SelectedIndexChanged_1(object sender, EventArgs e)
 {
     if (s[tabControl1.SelectedIndex] == 0)
     {
         btnX_Click(sender, e);
     }
 }
private void btnX_Click(object sender, EventArgs e)
{
    string formClass = ((TabControl)sender).SelectedTab.Tag.ToString();

    GenerateForm(formClass, sender);
}

 //设置选项卡标签图标
 tabControl1.ImageList = imageList1;
 tabPage1.ImageIndex = 0;
 tabPage2.ImageIndex = 1;
 tabPage3.ImageIndex = 2;
 tabPage4.ImageIndex = 3;

imageList操作
在这里插入图片描述

2.5 界面统一化处理

界面统一化处理,整体一致,隔裂化不强。

在这里插入图片描述
窗体反射处理

 //反射生成窗体
 Form fm = (Form)Assembly.GetExecutingAssembly().CreateInstance(form);
 //设置窗体没有边框,加入到选项卡中
 fm.FormBorderStyle = FormBorderStyle.None;
 fm.TopLevel = false;
 fm.Parent = ((TabControl)sender).SelectedTab;
 fm.ControlBox = false;
 fm.Dock = DockStyle.Fill;
 fm.Show();
 s[((TabControl)sender).SelectedIndex] = 1;

三、设计结果验证

64位测试

通过测试界面显示的IP地址信息,未出现中文乱码,且10秒后信息自动清除。

在这里插入图片描述

通过Ping IP地址操作,可以返回信息。

在这里插入图片描述

在应用安装程序具备时,软件可自动下载安装,受本地网络影响,下载速度不一样。

在这里插入图片描述

32位测试

需要联网操作,软件可进行搜索,根据搜索后获取的ID,可执行自动安装或手动安装操作。

在这里插入图片描述

以搜索JDK为例,支持竖直和水平滚动。

在这里插入图片描述
在这里插入图片描述
进行手动下载或自动安装操作时,受电脑性能影响,请稍后即可。
在这里插入图片描述
在这里插入图片描述

手动安装默认下载到C盘Downloads目录下,进行双击安装,自动安装下载完后无需用户操作自动安装,安装在C盘。

在这里插入图片描述
ARM64位测试

电脑将启动平衡模式,弹窗1秒后自动关闭。

在这里插入图片描述

禁止系统更新后,会提示重启操作,用户点击是,5秒后自动重启,点击否,在下一次开机时生效。

在这里插入图片描述

Windows已被禁止更新,点击恢复重启电脑可恢复更新,禁止系统更新默认会禁止,系统搜索、用户信息反馈与收集等服务。

在这里插入图片描述

总结

目前可以进行一些操作,解决一些生活中遇到的问题,相应的功能,后续在维护和更新中进行完善。软件可免费下载,免费使用,严谨第三方以付费等行为向用户收取费用。

软件官方版本
安装教程必看
账户和密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度智能云战略与咨询高级总监詹颖:每个人都能在大模型驱动的数字化生态中找到立足之地

“ 大模型是皇冠上的明珠。 ” 整理 | 王娴 编辑 | 云舒 出品|极新 2023年11月28日,极新AIGC行业峰会在北京东升国际科学园顺利召开,百度智能云战略与咨询高级总监詹颖女士在会上做了题为《生成式 AI 驱动企业应用创新》的演讲。 重点…

电脑手机文件无线互传方法?利用备忘录更方便

在忙碌的工作生活中,文件传输和分享已经成为了我们日常生活中的一部分。从厚厚的文件夹到电子化的文件,从线下到线上,这一转变让我们的工作和生活变得更加方便高效。 而在这个数字化时代,备忘录成为了我们实现电脑手机文件无线互…

03-详解网关的过滤器工厂和常见的网关过滤器路由过滤器,默认过滤器,全局过滤器的执行顺序

过滤器工厂 过滤器种类 GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务响应的结果做加工处理 Spring提供了31中不同的路由过滤器工厂 AddResponseHeader表示给请求添加响应头 default-filters: # 默认过滤器 - AddResponseHeaderX-Response-Default-R…

故障解析丨导入字符串NULL导致主从报错

1.背景概述 目前需要搭建一个从库,由于单表数据量较大,时间比较有限,考虑到导入导出的时间,并且GreatSQL支持并行load data的功能,能够加速数据的导入,因此决定使用 select into outfile 和 load data 的方…

设计模式(三)-结构型模式(1)-适配器模式

一、为何需要适配器模式(Adapter)? 在软件设计中,某个模块里有很多公用的功能接口,其中有些公用接口需要用到不同的类当中时,会出现接口不兼容的问题。因为这些不同的类对这个相同任务的接口,都有各自代码…

全栈必备——网络编程基础

我们是幸运的,因为我们拥有网络。网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界。 然而,网络的无标度和小世界特性使得它又是复杂的,无所不在,无所不能,以致于我们无法区分甚至…

镭速助力集成绘图建模工具加速文件传输速度

在当前信息化社会中,绘图建模工具已经成为许多人不可或缺的伙伴。无论是学习、工作还是生活,这些工具都能够在表达思想、设计方案以及展示成果等方面发挥重要作用。然而,随着绘图建模工具功能的日益强大,用户创作的文件也变得越来…

基于ssm大学生创新创业平台项目管理子系统设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对大学生创新创业项目信息管理混乱,出错率高,信…

js基础:简介、变量与数据类型、流程循环控制语句、数组及其api

JS基础:简介、变量与数据类型、流程循环控制语句、数组及其api 一、简介 1、js概述 tip:JavaScript是什么? 有什么作用? JavaScript(简称JS)是一种轻量级的、解释性的编程语言,主要用于在网页…

java系列-LinkedHashMap怎么实现LRU

1.定义变量accessOrder public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> {final boolean accessOrder;public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) {super(initialCapacity, loadFactor…

小间距LED显示屏的芯片扮演的关键角色

LED屏幕由数万颗灯珠封装而成&#xff0c;包含驱动芯片、PCB板、电阻、电容、模组套件和箱体等&#xff0c;形成一块高清LED显示屏。芯片的质量直接影响整个屏幕的品质、稳定性和性能。那么&#xff0c;什么是细间距LED显示屏&#xff1f;小间距LED显示屏芯片具体有何作用呢&am…

设计模式(2)--对象创建(1)--抽象工厂

1. 意图 提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 2. 四种角色 抽象产品(Product)、具体产品(Concrete Product)、抽象工厂(Abstract Factory)、具体工厂(Concrete Factory)。 3. 优点 3.1 分离了具体的类。Client只需使用抽象工厂类…

易生支付与青岛国资之间的合作即将成为现实。青岛国资决定以曲线入股易生支付。

易生金服的次要股权可能会有新的控制方。 根据西米支付网的消息&#xff0c;经营支付服务的持牌机构“易生支付”的唯一股东“易生金服”的第二大股东凯撒同盛发展股份有限公司的控股权将转让给青岛环海湾文化旅游发展有限公司&#xff0c;同时实际控制权也将交由青岛市市北区国…

java ATM swing窗体转账,取款,存款等

ATM 转账&#xff0c;取款&#xff0c;存款等等 开发环境 开发语言为Java&#xff0c;开发环境Eclipse或者IDEA都可以。 系统框架 利用JDK自带的 框架开发&#xff0c; 纯窗体模式&#xff0c;直接运行Main文件即可以。 涉及主要技术 银行ATM系统 系统用Java语言编写&a…

抖店做起来到底有多难?带你揭露抖音电商的真相!

我是电商珠珠 无论是谁问抖店还能做吗&#xff1f;基本上答案都是肯定的。他们只会说做店很简单&#xff0c;而不会告诉你做电商的压力&#xff0c;以及最真实的投资。 做抖店的风险他们都是一笔带过&#xff0c;好像无论是谁都能做一样。大部分电商公司都会让你做无货源&…

火力发电厂防雷及浪涌防护解决方案

火力发电厂是一种利用燃料燃烧产生的热能驱动汽轮机发电的设施&#xff0c;是目前世界上最常见的发电方式之一。火力发电厂的运行需要大量的电气设备&#xff0c;如辅机马达、通信系统、MIS系统、DCS系统等&#xff0c;这些设备对雷电分敏感&#xff0c;特别是DCS系统&#xff…

如何实现nacos的配置的热更新

我们在使用nacos进行修改配置后&#xff0c;需要微服务无需重启即可让配置生效&#xff0c;也就是使配置进行热更新我们可以采用下面的两种方式进行配置的热更新操作 方式一&#xff1a;在Value所注入的变量的类上添加注解RefreshScope RestController RequestMapping("/o…

Kubernetes(k8s)集群部署----->超详细

Kubernetes&#xff08;k8s&#xff09;集群部署-----&#xff1e;超详细 一、资源准备二、安装准备2.1 主机环境设置2.1.1 关闭操作系统防火墙、selinux2.1.2 关闭swap交换分区2.1.3 允许iptables检测桥接流量&#xff08;可选&#xff09; 2.2 安装Docker环境2.3 安装Kubeadm…

34、卷积实战 - 手写一个基础卷积算法

前面基本上把卷积这一算法的原理和公式介绍完了,如果还有不懂的,可以多翻几遍前面的章节内容,深入理解一下。 本节加一个实战,大家可以手动来实现一个卷积算法,本文中以 python 代码为例,C++ 的代码可以查看本节后面的链接。 说到卷积实现,其实就是自己手写一个卷积算…

pycharm中py文件设置参数

在py文件中右键 直接对应复制进去即可