一朋友懒,说想整个定时开关机的小工具,让我帮忙。然后我就弄了。这工具挺简单的,我准备以后也上传平时写的小工具,混积分下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# 制作一个定时关机小软件相关推荐

  1. 用Windows自带的工具写一个一键关机小程序

    如何用Windows自带的工具写一个一键关机小程序 工具/原料(打勾勾的可用可不用) 装有Windows系统的电脑 在机子上装个格式工厂(版本随意,最好更新到最新的) 制作环境 windows自带命令 ...

  2. python打字_使用Python制作一个打字训练小工具

    一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码 ...

  3. windows 定时关机小脚本

    windows 定时关机小脚本 在使用Windows时开关机总是有些麻烦,这里我写了一个一键关机以及定时关机两个小脚本供大家下载使用(下载后新建文本文档复制到文本中然后将后缀名改为.bat 即可运行) ...

  4. python 编写实用小工具-使用Python制作一个打字训练小工具

    一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码 ...

  5. java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序

    在Java项目中利用continue与break制作一个聊天室小程序 发布时间:2020-12-08 16:03:27 来源:亿速云 阅读:98 作者:Leah 在Java项目中利用continue与 ...

  6. python软件桌面图标_python制作一个桌面便签软件

    # 2014.10.15 更新了memo.zip, 网盘的exe:修复:1.隔日启动不能正常加载json,加入:1.隐藏任务栏图标,2.通过垃圾桶进行窗口移动. # 2014.10.8 10.36更新 ...

  7. 使用小程序制作一个飞机大战小游戏

    此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单. 一.创建小程序 二.页面实现 三.代码块 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填写所需的各项信息进 ...

  8. PS制作一个百度的小熊掌LOGO

    这篇教程是向脚本之家的朋友分享PS制作一个百度的小熊掌LOGO方法,教程比较基础,很简单,适合新手来学习,推荐到脚本之家,喜欢的朋友可以参考本文,来看看吧 大家每天都用会百度,有没有想过自己制作一个百 ...

  9. 微信小程序|使用小程序制作一个时间管理小工具

    适时而学,适时而息,张弛有度的生活态度才能让我们走得更远.此文使用小程序制作一个日程管理小工具,将时间进行分解以实现有效管理. 开发步骤 一.创建小程序 二.功能实现 2.1.首页 2.2.记录页 3 ...

  10. 自己写的一个电话本小软件(2004年)

    这是我写的一个电话本小软件 图片预览 软件说明: ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆  ▓                    欢迎使用TelBook            ...

最新文章

  1. Synchronize使用
  2. 【ABAP】Field Symbol使用总结
  3. 【嵌入式】C语言高级编程-container_of宏(04)
  4. RBD和AOF持久化对比
  5. PTA: 6-5 删除单链表偶数节点 (20 分)
  6. java hsqldb数据库,HSQLDB数据库的使用
  7. SKPlayer -- 一个超级简单好用的音乐插件+CSS+HTML+JS
  8. 如何让移动硬盘在Mac和Windows上通用使用
  9. 智能网联车载终端渗透率提升之道
  10. 教你将PDF文件旋转的方法
  11. 什么是线程安全问题 及怎么解决线程安全问题
  12. c++ Arx二次开发创建椭圆和样条曲线
  13. 光纤交换机后台linux,更换光纤交换机的步骤详解
  14. maven 多模块项目,打包其中一个项目,Could not find artifact org.javaboy:commons:pom:1.0-SNAPSHOT
  15. 系统学习NLP(三十一)--基于CNN句子分类
  16. 《计算机网络 自顶向下方法》笔记 第二章 应用层
  17. python画卡通_Python动画底纹matplotlib
  18. 你离熟练重装系统可能只差了一个PE启动盘?
  19. 工业网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换?
  20. 互联网是如何运作的?

热门文章

  1. 淘宝类目列表1~2~3~4~5级。及根据淘宝商品ID查询基础信息,类目ID查类目信息API调用
  2. linux镜像下载与安装
  3. mongodb执行sql脚本文件
  4. 西门子V90电机数字量输出(DO)接倍福数字量输入模块
  5. SQL Server 软件环境安装与配置
  6. 《Spring Boot极简教程》第9章 Spring Boot集成Scala混合Java开发
  7. scala教程(一)
  8. CTF比赛中关于zip的总结
  9. 拼多多上市关你什么事?
  10. python查询ip归属地,Python查询IP地址归属完整代码