C#设置自动关机

news2024/12/24 0:15:12

功能:自动设置电脑关机时间,可取消

创建一个shutdown函数,bool isCancle,传入值为ture就取消关机,interval间隔时间,unit不带符号的整型

  private static void ShutdownPC(bool isCancel, uint interval)
         {
            Process proc = new Process();
            proc.StartInfo.FileName = "cmd.exe"; // 启动命令行程序
            proc.StartInfo.UseShellExecute = false; // 不使用Shell来执行,用程序来执行
            proc.StartInfo.RedirectStandardError = true; // 重定向标准输入输出
            proc.StartInfo.RedirectStandardInput = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.CreateNoWindow = true; // 执行时不创建新窗口
            proc.Start();
            string commandLine;
            if (isCancel)
                commandLine = @"shutdown /a";//取消自动关机命令
            else
                commandLine = @"shutdown /s /t " + interval.ToString();
            proc.StandardInput.WriteLine(commandLine);
         }

1个时间选择器,2个按钮,一个确定按钮一个取消按钮

当默认时间小于设定时间的话,提示错误

        /// <summary>
        /// 确定按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_sure_Click(object sender, EventArgs e)
        {
           //延迟关机,等待的时间
           int waitSecond = 0;
           DateTime currentTime = DateTime.Now.ToLocalTime();//获取当前时间
           DateTime aimTime = dateTimePicker_aim.Value;//获取目标时间
           //比较两个时间。关机时间也在当前时间之后
           if (DateTime.Compare(currentTime, aimTime) >= 0)
              {
                 MessageBox.Show("目标时间小于当前时间");
                 return;
               }
           else{
                //将两个时间间隔,换算成秒,取整输出
                int AimCompareCurrentToSecond = ((int)((aimTime - currentTime).TotalSeconds));
                waitSecond = AimCompareCurrentToSecond + 1;
                //MessageBox.Show(AimCompareCurrentToSecond.ToString());
                }          
            //设置自动关机
            ShutdownPC(false, (uint)waitSecond);
            label_current.Text = "已设置自动关机";
            button_cancel.Enabled = true;
            button_sure.Enabled = false;
        }
        /// <summary>
        /// 取消关机按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_cancel_Click(object sender, EventArgs e)
        {
            ShutdownPC(true, 0);//true取消自动关机,0关机延迟时间
            label_current.Text = "无自动关机";
            button_cancel.Enabled = false;
            button_sure.Enabled = true;

        }

界面效果:

完整源码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace Auto_shut
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
         private static void ShutdownPC(bool isCancel, uint interval)
         {
            Process proc = new Process();
            proc.StartInfo.FileName = "cmd.exe"; // 启动命令行程序
            proc.StartInfo.UseShellExecute = false; // 不使用Shell来执行,用程序来执行
            proc.StartInfo.RedirectStandardError = true; // 重定向标准输入输出
            proc.StartInfo.RedirectStandardInput = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.CreateNoWindow = true; // 执行时不创建新窗口
            proc.Start();
            string commandLine;
            if (isCancel)
                commandLine = @"shutdown /a";//取消自动关机命令
            else
                commandLine = @"shutdown /s /t " + interval.ToString();
            proc.StandardInput.WriteLine(commandLine);
         }
        /// <summary>
        /// 确定按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_sure_Click(object sender, EventArgs e)
        {
           //延迟关机,等待的时间
           int waitSecond = 0;
           DateTime currentTime = DateTime.Now.ToLocalTime();//获取当前时间
           DateTime aimTime = dateTimePicker_aim.Value;//获取目标时间
           //比较两个时间。关机时间也在当前时间之后
           if (DateTime.Compare(currentTime, aimTime) >= 0)
              {
                 MessageBox.Show("目标时间小于当前时间");
                 return;
               }
           else{
                //将两个时间间隔,换算成秒,取整输出
                int AimCompareCurrentToSecond = ((int)((aimTime - currentTime).TotalSeconds));
                waitSecond = AimCompareCurrentToSecond + 1;
                //MessageBox.Show(AimCompareCurrentToSecond.ToString());
                }          
            //设置自动关机
            ShutdownPC(false, (uint)waitSecond);
            label_current.Text = "已设置自动关机";
            button_cancel.Enabled = true;
            button_sure.Enabled = false;
        }
        /// <summary>
        /// 取消关机按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_cancel_Click(object sender, EventArgs e)
        {
            ShutdownPC(true, 0);//true取消自动关机,0关机延迟时间
            label_current.Text = "无自动关机";
            button_cancel.Enabled = false;
            button_sure.Enabled = true;

        }

    }
}

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

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

相关文章

A*搜索算法

前言 这个我也不知道算不算是A*搜索算法&#xff0c;可能只是A搜索算法。 首先看相关的定义&#xff1a; 启发式搜索在搜索过程中根据启发信息评估各个节点的重要性&#xff0c;优先搜索重要的节点。 估价函数的任务就是估计待搜索节点“有希望”的程度。 估价函数f(n)定义…

vue 实现数字验证码功能

需求&#xff1a;写了一个 手机发送验证码后 输入固定验证码的功能 封装成一个组件,如下: <template><div class"conts"><div class"box"><div class"code_list"><div :class"[ code_item, hideIndex 0 ? co…

Ubuntu Qt 5.15.2 支持 aarch64

概述 AArch64是ARMv8 架构的一种执行状态。 为了更广泛地向企业领域推进&#xff0c;需要引入64 位构架。 同时也需要在ARMv8 架构中引入新的AArch64 执行状态。 AArch64 不是一个单纯的32 位ARM 构架扩展&#xff0c;而是ARMv8 内全新的构架&#xff0c;完全使用全新的A64 指令…

软件设计模式——外观模式

摘要 本文主要分析设计模式 - 结构型 - 外观(Facade)&#xff0c;它提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让子系统更容易使用。 一、外观模式的意图 提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让…

2023蓝帽杯半决赛取证复现

1.检材数据开始提取是今年什么时候&#xff1f;&#xff08;答案格式&#xff1a;04-12 13:26&#xff09; 09-11 17:21 这题做错了 其实当时盘古石手机取证里面就有的&#xff0c;想多了去看了日志文件 是真的有点歧义&#xff0c;20分就开始提取任务了 2.嫌疑人手机SD卡存…

TLS/SSL(七) 非对称密码应用 之DH密钥交换协议

一 DH密钥交换协议 DH密钥交换协议用来沟通协商出后面AES算法的密钥,是广泛使用、安全的密钥交换协议 ① RSA密钥交换 备注&#xff1a; RSA算法没有前向保密性&#xff0c;所以TLS1.3及以后的协议禁止RSA作为密钥协商算法 如何理解前向保密性 故事&#xff1a; 斯诺登事…

Spring Cloud Alibaba Seata 搭建以及分布式事务的验证

文章目录 Spring Cloud Alibaba Seata 搭建以及分布式事务的验证1.seata 简介2. seata的三大角色3. Seata的流程4. Seata AT模式5. Seata搭建找到模板案例&#xff0c;照着抄6. Seata Client快速开始6.1 声明式事务实现&#xff08;GlobalTransactional&#xff09;6.2 添加依赖…

【牛客网】倒置字符串

思路 首先将整个字符串逆序,再分别将每个单词逆序 代码 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void reverse(int begin, int end, char[] array){while(begin < end){char temp array[begin…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023

[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…

USB到UART桥接控制器——GP232RNL

GP232RNL是一款高度集成的USB到UART桥接控制器&#xff0c;提供了一种简单的解决方案&#xff0c;可以使用最少的元器件和PCB空间&#xff0c;将RS232接口转换为USB接口。GP232RNL包括一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带有完整的调制解调器控制信号的异…

Python完整教程

Python由荷兰国家数学与计算机科学研究中心的吉多范罗苏姆于1990年代初设计&#xff0c;作为一门叫作ABC语言的替代品。 [1] Python提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python语法和动态类型&#xff0c;以及解释型语言的本质&#xff0c;使它成…

【Hash表】无重复字符的最长字串-力扣 3 题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

中国TO B投资,迈入第二周期

2023年,中国TOB正在愈发成熟,迈进第二个周期的趋势已经体现在融资金额上。 作者|斗斗 编辑|皮爷 出品|产业家 TOB&#xff0c;依旧是一级市场的大热门。 统计数据显示&#xff0c;截止2023年8月31日&#xff0c;TOB领域共发生融资事件406起&#xff0c;同比2022年减少…

人工智能核心基础 - 规划和概要

Hi&#xff0c;你好。又见面咯&#xff0c;我是茶桁。 在之前&#xff0c;我花了两个来月的时间撰写了「Python篇」和「数学篇」&#xff0c;希望小伙伴们在正式进入AI之前能够打好一个基础。那么今天开始&#xff0c;我们将正式开始AI基础的学习。 这一节课咱们先不着急直接…

细胞机器人系统中的群体智能

摘要 细胞机器人系统具有“智能”行为能力。本文分析了这种智能的含义。本文根据上述不可思议智能行为的不可预测性来定义机器人智能和机器人系统智能。对不可预测性概念的分析与&#xff08;1&#xff09;统计不可预测、&#xff08;2&#xff09;不可访问、&#xff08;3&am…

STL中string类的实现

目录 引入 构造 | 析构函数 构造函数 析构函数 返回指针的c_str() 求字符大小的size() operator[] 普通对象调用&#xff1a; const对象调用&#xff1a; 迭代器的实现 范围for 深浅拷贝 浅拷贝的不足 实现深拷贝 赋值的深拷贝 传统写法与现代写法 传统写法 现…

前端开发之服务器的基本概念与初识Ajax

1&#xff0c;服务器的基本概念与初识Ajax 1.1 URL地址的组成部分 1.2 客户端与服务器的通信过程 1.3 网页中如何请求数据 1.4 $.get()函数 1.4.1 $.get()函数的语法 // jQuery 中 $.get() 函数的功能单一&#xff0c;专门用来发起 get 请求&#xff0c;从而将服务器上的资源…

Cartesi Rollups在主网上正式启用,推出首个DApp,名为Honeypot

Cartesi的贡献者呼吁所有Web3开发者测试并加固Cartesi Rollups的安全性&#xff0c;因为Honeypot的资金每周以复利增长8% 2023年9月26日&#xff0c;在今天的美国纽约&#xff0c;Cartesi&#xff08;CTSI&#xff09;, 一种具有能够运行Linux发行版的虚拟机的特定应用程序的R…

​cannot import name ‘container_abcs’ from ‘torch._six’​

因为1.8版本之后container_abcs就已经被移除了。 cannot import name ‘container_abcs’ from ‘torch._six’ 解决办法: 改成以下写法&#xff1a; import collections.abc as container_abcs int_classes int

怎么写一个可以拖拽缩放的div?

说在前面 元素拖拽和缩放现在也是一个很常见的功能&#xff0c;让我们从实现div元素的拖拽缩放开始来了解元素拖拽缩放的具体原理和实现方法吧。 效果展示 实现步骤 画一个div 首先我们需要先画一个div&#xff0c;并给它8个方位&#xff08;上、下、左、右、左上、右上、右下…