zoukankan      html  css  js  c++  java
  • 定时倒计时关机的小程序

      昨天晚上想要让电脑在百度云上下载很多东西,但是找不到百度云上有下载完后自动关机的选择项,感觉很懊恼。只能自己用cmd输入命令去执行自动关机了,感觉好麻烦。而且这种命令行的执行看起来太不爽了。于是今天在上起床就写了一个定时关机和倒计时关机的小程序。原理还是使用了cmd命令行。

    关机:shutdown -s -t 10表示10s后自动关机

    取消:shutdown -a表示取消自动关机

    界面如下:

    代码如下:

      1   public partial class Form1 : Form
      2     {
      3         public Form1()
      4         {
      5             InitializeComponent();
      6         }
      7         private bool sureDown = false;
      8         private int countDownTime = 0;
      9         private void timer1_Tick(object sender, EventArgs e)
     10         {
     11             lblDateTime.Text = DateTime.Now.ToString();
     12             //if (sureDown)
     13             //{
     14             //    cboHour.SelectedIndex = Convert.ToInt32(DateTime.Now.Hour);
     15             //    cboMinute.SelectedIndex = Convert.ToInt32(DateTime.Now.Minute); 
     16             //}
     17         }
     18         //选择定时关机
     19         private void btnSureTime_Click(object sender, EventArgs e)
     20         {
     21             sureDown = true;
     22             cboHour.SelectedIndex = Convert.ToInt32(DateTime.Now.Hour);
     23             cboMinute.SelectedIndex = Convert.ToInt32(DateTime.Now.Minute);
     24         }
     25         //选择倒计时关机
     26         private void btnCountDown_Click(object sender, EventArgs e)
     27         {
     28             sureDown = false;
     29             cboHour.SelectedIndex =0;
     30             cboMinute.SelectedIndex =30;
     31         }
     32         /// <summary>
     33         /// 执行自动关机,包括定时关机和倒计时关机
     34         /// </summary>
     35         /// <param name="sender"></param>
     36         /// <param name="e"></param>
     37         private void btnDown_Click(object sender, EventArgs e)
     38         {
     39             if (cboHour.Text == "" || cboMinute.Text == "")
     40             {
     41                 MessageBox.Show("请先选择模式");
     42                 return;
     43             }
     44             if (sureDown)
     45             {
     46                 //定时关机计算时间
     47                 countDownTime = Convert.ToInt32(cboHour.SelectedItem) * 3600 + Convert.ToInt32(cboMinute.SelectedItem) * 60 -Convert.ToInt32(DateTime.Now.Hour)*3600-Convert.ToInt32(DateTime.Now.Minute)*60 -  Convert.ToInt32(DateTime.Now.Second);
     48                 if (countDownTime <= 0)
     49                 {
     50                     countDownTime =24*60*60 +countDownTime;
     51                 }
     52             }
     53             else
     54             {
     55                 //倒计时关机计算时间
     56                 countDownTime = Convert.ToInt32(cboHour.SelectedItem) * 3600 + Convert.ToInt32(cboMinute.SelectedItem) * 60;
     57             }
     58             int[] time = new int[1];
     59             time[0] = countDownTime;
     60             MakeProcess("shutdown -s -t ", time);
     61             Form2 frm = new Form2(countDownTime);
     62             frm.ShowDialog();
     63             //Process cmdP = new Process();
     64             //cmdP.StartInfo.FileName = "cmd.exe";//进程打开文件
     65             //cmdP.StartInfo.UseShellExecute = false;//是否启动系统外壳
     66             //cmdP.StartInfo.RedirectStandardInput = true;//是否从StandardInout输入
     67             //cmdP.StartInfo.RedirectStandardOutput = true;
     68             //cmdP.StartInfo.RedirectStandardError = true;
     69             //cmdP.StartInfo.CreateNoWindow = true;//启动程序时是否显示窗口
     70             //cmdP.Start();
     71             //cmdP.StandardInput.WriteLine("shutdown -s -t "+countDownTime);
     72             //cmdP.StandardInput.WriteLine("exit");
     73             //cmdP.WaitForExit();
     74             //cmdP.Close();
     75         }
     76         /// <summary>
     77         /// 取消自动关机
     78         /// </summary>
     79         /// <param name="sender"></param>
     80         /// <param name="e"></param>
     81         private void btnRemove_Click(object sender, EventArgs e)
     82         {
     83             MakeProcess("shutdown -a");
     84             //Process cmdP = new Process();
     85             //cmdP.StartInfo.FileName = "cmd.exe";
     86             //cmdP.StartInfo.UseShellExecute = false;
     87             //cmdP.StartInfo.RedirectStandardInput = true;
     88             //cmdP.StartInfo.RedirectStandardOutput = true;
     89             //cmdP.StartInfo.RedirectStandardError = true;
     90             //cmdP.StartInfo.CreateNoWindow = true;
     91             //cmdP.Start();
     92             //cmdP.StandardInput.WriteLine("shutdown -a");
     93             //cmdP.StandardInput.WriteLine("exit");
     94             //cmdP.WaitForExit();
     95             //cmdP.Close();
     96         }
     97         //创建进程用于打开,关闭定时关机
     98         private void MakeProcess(string cmd,params int[] time)
     99         {
    100             
    101             Process cmdP = new Process();
    102             cmdP.StartInfo.FileName = "cmd.exe";//进程打开文件
    103             cmdP.StartInfo.UseShellExecute = false;//是否启动系统外壳
    104             cmdP.StartInfo.RedirectStandardInput = true;//是否从StandardInout输入
    105             cmdP.StartInfo.RedirectStandardOutput = true;
    106             cmdP.StartInfo.RedirectStandardError = true;
    107             cmdP.StartInfo.CreateNoWindow = true;//启动程序时是否显示窗口
    108             cmdP.Start();
    109             if (time.Length<=0)
    110             {
    111                 cmdP.StandardInput.WriteLine(cmd);
    112             }
    113             else
    114             {
    115                 cmdP.StandardInput.WriteLine(cmd + time[0]);
    116             }
    117             cmdP.StandardInput.WriteLine("exit");
    118             cmdP.WaitForExit();
    119             cmdP.Close();
    120         }
    121 
    122         private void Form1_Load(object sender, EventArgs e)
    123         {
    124             cboHour.SelectedIndex = Convert.ToInt32(DateTime.Now.Hour);
    125             cboMinute.SelectedIndex = Convert.ToInt32(DateTime.Now.Minute);
    126             lblDateTime.Text = DateTime.Now.ToString();
    127         }
    128     }
     1 设定好时间后的窗体  
     2  public partial class Form2 : Form
     3     {
     4         private int _time;
     5         private int hour = 0;
     6         private int minute = 0;
     7         private int second = 0;
     8 
     9         public int Time
    10         {
    11             get { return _time; }
    12             set { _time = value; }
    13         }
    14         public Form2(int time)
    15         {
    16             this.Time = time;
    17             hour = time / 3600;
    18             minute = (time % 3600) / 60;
    19             second = time % 60;
    20             InitializeComponent();
    21         }
    22 
    23         private void Form2_Load(object sender, EventArgs e)
    24         {
    25             lblDateTime.Text = DateTime.Now.ToString();
    26             label2.Text = hour + "小时" + minute + "分钟" + second + "秒后";
    27         }
    28 
    29         private void timer1_Tick(object sender, EventArgs e)
    30         {
    31             lblDateTime.Text = DateTime.Now.ToString();
    32             Time = Time - 1;
    33             hour = Time / 3600;
    34             minute = (Time % 3600) / 60;
    35             second = Time % 60;
    36             label2.Text = hour + "小时" + minute + "分钟" + second + "秒后";
    37         }
    38 
    39         private void MakeProcess(string cmd, params int[] time)
    40         {
    41 
    42             Process cmdP = new Process();
    43             cmdP.StartInfo.FileName = "cmd.exe";//进程打开文件
    44             cmdP.StartInfo.UseShellExecute = false;//是否启动系统外壳
    45             cmdP.StartInfo.RedirectStandardInput = true;//是否从StandardInout输入
    46             cmdP.StartInfo.RedirectStandardOutput = true;
    47             cmdP.StartInfo.RedirectStandardError = true;
    48             cmdP.StartInfo.CreateNoWindow = true;//启动程序时是否显示窗口
    49             cmdP.Start();
    50             if (time.Length <= 0)
    51             {
    52                 cmdP.StandardInput.WriteLine(cmd);
    53             }
    54             else
    55             {
    56                 cmdP.StandardInput.WriteLine(cmd + time[0]);
    57             }
    58             cmdP.StandardInput.WriteLine("exit");
    59             cmdP.WaitForExit();
    60             cmdP.Close();
    61         }
    62 
    63         private void btnCancle_Click(object sender, EventArgs e)
    64         {
    65             MakeProcess("shutdown -a");
    66             MessageBox.Show("倒计时关机已取消");
    67             this.Close();
    68         }
    69     }

    可执行文件:

    http://pan.baidu.com/s/1gfr4fcB

  • 相关阅读:
    如何理解「复位 」?
    menuconfig配置
    编译Linux内核过程中遇到的问题与解决
    解决qt 5.14版本 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization faile问题
    认真教好软件工程
    2016同学们博客链接汇总
    车站订票系统可行性分析报告
    第四纪与地貌学(1)——长江口第四纪沉积物中构造与古气候耦合作用的探讨
    软件工程(1)——对书本的温习
    四则运算
  • 原文地址:https://www.cnblogs.com/pushudepu/p/5999201.html
Copyright © 2011-2022 走看看