C# 制作一个定时关机小软件
一朋友懒,说想整个定时开关机的小工具,让我帮忙。然后我就弄了。这工具挺简单的,我准备以后也上传平时写的小工具,混积分下CSDN的程序。
这工具的功能就是,每天在固定的两个时间点进行关机操作。至于如何让它自启动,我没有去想办法,只是让他扔去windows的开机启动里面。
还有这玩意儿我就没想过让它能退出,强制不给关。下面开始说正文。
①在vs2017创建一个winform窗体
②增加一个app.config,里面增加配置节点信息
<?xml version="1.0" encoding="utf-8" ?>
<configuration><appSettings><add key ="程序关机时间" value="17:20;16:00"/><add key ="程序提前多少分钟提示" value="20"/></appSettings>
</configuration>
③添加找到的关机类clsPCDown.cs
④下面是窗体代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Runtime.InteropServices;namespace 定时关机程序
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private string strChengXuGuanJiShiJian = "";private string strTiQianShiJian = "";private bool blnStart = true;private bool blnUseFull = true;private void Form1_Load(object sender, EventArgs e){//读取app.config的设置strChengXuGuanJiShiJian = ConfigurationSettings.AppSettings["程序关机时间"].ToString();strChengXuGuanJiShiJian = strChengXuGuanJiShiJian.Replace(";", ";").Replace(":", ":");//替换中文字符的分号和冒号strChengXuGuanJiShiJian = strChengXuGuanJiShiJian.TrimEnd(';');//去掉尾部多余的分号strTiQianShiJian = ConfigurationSettings.AppSettings["程序提前多少分钟提示"].ToString();//聚焦 忽略按钮this.button3.Focus();}private void timer1_Tick(object sender, EventArgs e)//时间间隔1000毫秒执行一次{//程序第一次运行的时候,直接不显示窗体if (blnStart){//程序运行的时候,直接不显示窗体m_mthDisShow();blnStart = false;}//显示当前时间到窗体中DateTime dtmNow = DateTime.Now;//将当前时间存入变量,避免下面处理时间的时候,时间不一致this.lblCurrentTime.Text = dtmNow.ToString("yyyy年MM月dd日 HH时mm分ss秒");//格式化显示的时间//计算距离关机还要多少分钟DateTime dtmTarge = DateTime.Parse(dtmNow.ToString("yyyy-MM-dd ") + m_strGetGuanJiShiJian());//关机时间,app.config只存了时分秒,所以要转换一下TimeSpan ts = dtmTarge - dtmNow;//关机时间-当前时间得到间隔double dblShengYuMiao = ts.TotalSeconds;if (dblShengYuMiao < 0)//超过关机时间,重置取消关机的状态{dblShengYuMiao = 24 * 60 * 60 + dblShengYuMiao;blnUseFull = true;}int intShengYuFenZhong = (int)(dblShengYuMiao / 60);int intShengYuMiao = (int)(dblShengYuMiao) % 60;if((intShengYuFenZhong <= int.Parse(strTiQianShiJian) )&& blnUseFull==true)//剩余分钟在提示的时间范围内则执行{if (this.Visible == false)//窗体不可见的时候,就显示窗体{m_mthShow();}}this.lblShengYuFenZhong.Text = intShengYuFenZhong.ToString();this.lblMiao.Text = intShengYuMiao.ToString();if(intShengYuFenZhong == 0 && intShengYuMiao == 0 && blnUseFull == true)//剩余时间为0,并且没有点过取消关机,因为上面会重置时间,所以只会执行一次关机操作{m_mthClosePC();}}private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)//鼠标单击或者双击都走这里{//不增加退出功能,除非自己结束系统进程if(this.WindowState == FormWindowState.Normal && this.Visible == true )//窗体当前状态如果是正常显示并且可见,则隐藏{m_mthDisShow();}else if(this.Visible == false)//窗体不可见的时候,就显示窗体{m_mthShow();}}/// <summary>/// 不显示窗体,同事显示小图标/// </summary>private void m_mthDisShow(){this.notifyIcon1.Visible = true;//在通知区显示窗体的Iconthis.WindowState = FormWindowState.Minimized;//将窗体设置成最小化this.Visible = false;//设置主窗体不可见this.ShowInTaskbar = false;//使Form不在任务栏上显示this.Hide();}/// <summary>/// 显示窗体/// </summary>private void m_mthShow(){this.Show();this.WindowState = FormWindowState.Normal;this.Activate();}private void button3_Click(object sender, EventArgs e){m_mthDisShow();}private string m_strGetGuanJiShiJian(){string strResult = "";if(strChengXuGuanJiShiJian.Contains(";"))//时间是多个,则要分隔,并且找到对的关机时间{//先分隔字符串,得到正确的时间DateTime dtmNow = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:00"));string[] strShiJianArr = strChengXuGuanJiShiJian.Split(';');//以分号分隔字符串,得到时间点//对这个数组排序,因为是时间格式,所以需要转换成datetime排序,这里使用冒泡排序,从小到大排序for(int i =0;i<strShiJianArr.Length-1;i++){for(int j = 0;j<strShiJianArr.Length-i-1;j++){DateTime dtm1 = DateTime.Parse(dtmNow.ToString("yyyy-MM-dd " + strShiJianArr[j]));DateTime dtm2 = DateTime.Parse(dtmNow.ToString("yyyy-MM-dd " + strShiJianArr[j+1]));if(dtm1 > dtm2)//交换{string strTemp = strShiJianArr[j + 1];strShiJianArr[j + 1] = strShiJianArr[j];strShiJianArr[j] = strTemp;}}}//判断当前时间在哪个时间间隔里面bool blnHasFind = false;for(int i =0;i<strShiJianArr.Length;i++){if(dtmNow <= DateTime.Parse(dtmNow.ToString("yyyy-MM-dd " + strShiJianArr[i]))){blnHasFind = true;strResult = strShiJianArr[i];break;}}//如果都不在,则取第一个if (blnHasFind == false)strResult = strShiJianArr[0];}else{strResult = strChengXuGuanJiShiJian;}return strResult;}private void button1_Click(object sender, EventArgs e){m_mthClosePC();}private void m_mthClosePC(){//MessageBox.Show("guanji");//return;clsPCDown clsPcControl = new clsPCDown();clsPcControl.ShutDown();}private void button2_Click(object sender, EventArgs e){if(MessageBox.Show("是否取消当天的自动关机?","提示!",MessageBoxButtons.YesNo) == DialogResult.Yes){//聚焦 忽略按钮this.button3.Focus();blnUseFull = false;m_mthDisShow();}}private void Form1_FormClosing(object sender, FormClosingEventArgs e){MessageBox.Show("本程序拒绝关闭,请单击“忽略”按钮隐藏!");e.Cancel = true;}}
}
刚才上传代码上去,现在在审核,过了之后我再发链接出来
http://download.csdn.net/download/a47449774/12165451
C# 制作一个定时关机小软件相关推荐
- 用Windows自带的工具写一个一键关机小程序
如何用Windows自带的工具写一个一键关机小程序 工具/原料(打勾勾的可用可不用) 装有Windows系统的电脑 在机子上装个格式工厂(版本随意,最好更新到最新的) 制作环境 windows自带命令 ...
- python打字_使用Python制作一个打字训练小工具
一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码 ...
- windows 定时关机小脚本
windows 定时关机小脚本 在使用Windows时开关机总是有些麻烦,这里我写了一个一键关机以及定时关机两个小脚本供大家下载使用(下载后新建文本文档复制到文本中然后将后缀名改为.bat 即可运行) ...
- python 编写实用小工具-使用Python制作一个打字训练小工具
一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码 ...
- java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序
在Java项目中利用continue与break制作一个聊天室小程序 发布时间:2020-12-08 16:03:27 来源:亿速云 阅读:98 作者:Leah 在Java项目中利用continue与 ...
- python软件桌面图标_python制作一个桌面便签软件
# 2014.10.15 更新了memo.zip, 网盘的exe:修复:1.隔日启动不能正常加载json,加入:1.隐藏任务栏图标,2.通过垃圾桶进行窗口移动. # 2014.10.8 10.36更新 ...
- 使用小程序制作一个飞机大战小游戏
此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单. 一.创建小程序 二.页面实现 三.代码块 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填写所需的各项信息进 ...
- PS制作一个百度的小熊掌LOGO
这篇教程是向脚本之家的朋友分享PS制作一个百度的小熊掌LOGO方法,教程比较基础,很简单,适合新手来学习,推荐到脚本之家,喜欢的朋友可以参考本文,来看看吧 大家每天都用会百度,有没有想过自己制作一个百 ...
- 微信小程序|使用小程序制作一个时间管理小工具
适时而学,适时而息,张弛有度的生活态度才能让我们走得更远.此文使用小程序制作一个日程管理小工具,将时间进行分解以实现有效管理. 开发步骤 一.创建小程序 二.功能实现 2.1.首页 2.2.记录页 3 ...
- 自己写的一个电话本小软件(2004年)
这是我写的一个电话本小软件 图片预览 软件说明: ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ▓ 欢迎使用TelBook ...
最新文章
- Synchronize使用
- 【ABAP】Field Symbol使用总结
- 【嵌入式】C语言高级编程-container_of宏(04)
- RBD和AOF持久化对比
- PTA: 6-5 删除单链表偶数节点 (20 分)
- java hsqldb数据库,HSQLDB数据库的使用
- SKPlayer -- 一个超级简单好用的音乐插件+CSS+HTML+JS
- 如何让移动硬盘在Mac和Windows上通用使用
- 智能网联车载终端渗透率提升之道
- 教你将PDF文件旋转的方法
- 什么是线程安全问题 及怎么解决线程安全问题
- c++ Arx二次开发创建椭圆和样条曲线
- 光纤交换机后台linux,更换光纤交换机的步骤详解
- maven 多模块项目,打包其中一个项目,Could not find artifact org.javaboy:commons:pom:1.0-SNAPSHOT
- 系统学习NLP(三十一)--基于CNN句子分类
- 《计算机网络 自顶向下方法》笔记 第二章 应用层
- python画卡通_Python动画底纹matplotlib
- 你离熟练重装系统可能只差了一个PE启动盘?
- 工业网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换?
- 互联网是如何运作的?