当前位置:编程学习 > C#/ASP.NET >>

自己写的一个C#版定时关机器

好长时间没写代码了,前几天闲着没事的时候写了一个定时关机器,真的挺有成就感的,哈哈。

编译过的程序已经传到网上,大家可以下载试试玩。
http://www.enmay.com/thread-1019-1-1.html

下 面贴出源代码:

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

namespace CMDProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnAply_Click(object sender, EventArgs e)
        {
            int hour = Convert.ToInt32(comboBox1.SelectedItem.ToString());
            int minute = Convert.ToInt32(comboBox2.SelectedItem.ToString());
            int second = Convert.ToInt32(comboBox3.SelectedItem.ToString());

            lblTime.Text = DateTime.Now.AddHours(hour).AddMinutes(minute).AddSeconds(second).ToString("yyyy-MM-dd HH:mm:ss");
            btnCancel.Enabled = true;
            btnAply.Enabled = false;
            timer1.Start();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i <=12; i++)
            {
                comboBox1.Items.Add(i);
            }
            comboBox1.SelectedIndex = 0;

            for (int i = 0; i <= 59; i++)
            {
                comboBox2.Items.Add(i);
            }
            comboBox2.SelectedIndex = 0;

            for (int i = 0; i <= 59; i++)
            {
                comboBox3.Items.Add(i);
            }
            comboBox3.SelectedIndex = 0;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            btnCancel.Enabled = false;
            btnAply.Enabled = true;
            timer1.Stop();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            string method = string.Empty;
            if (radioButton1.Checked)
            {
                method = "-s";
            }
            else if (radioButton2.Checked)
            {
                method = "-r";
            }

            if (DateTime.Now>=Convert.ToDateTime(lblTime.Text.Trim()))
            {
                timer1.Stop();
                Process process = new Process();
                process.StartInfo.FileName = "shutdown.exe";
                process.StartInfo.UseShellExecute = false;// 不使用Shell来执行,用程序来执行
                process.StartInfo.CreateNoWindow = true; // 执行时不创建新窗口
                process.StartInfo.Arguments = string.Format("{0} -t 0", method);
                process.Start();
            }
        }
    }
}

最后上张运行效果图:

--------------------编程问答-------------------- 上面的那个下载地址错了,现给出正确的。

http://www.enmay.com/thread-1020-1-1.html --------------------编程问答-------------------- 你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。 --------------------编程问答-------------------- 你的成就很虚无。 --------------------编程问答--------------------
引用 3 楼 gouhan02 的回复:
你的成就很虚无。


不要打击人········ --------------------编程问答-------------------- 自娱自乐 哈哈 --------------------编程问答-------------------- 自娱自乐 --------------------编程问答-------------------- 不用windows api? 不知道在高级的系统如windows 7中是否有效?现在正好需要关机,测试一下看看再说吧. --------------------编程问答-------------------- 呵呵~~支持~lz加油~~ --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 不错,可以实现想要的功能. --------------------编程问答-------------------- 不错,可以实现想要的功能. --------------------编程问答--------------------
引用 2 楼 gouhan02 的回复:
你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。


首先,我想说纯技术交流帖,并无炫耀的意思,你自己自负,没必要把别人想的和你一样龌龊。其次,我想很多人没有学过计算机的,他们记住了那些命令了吗,office只有这么智能了可还不一样有很多人不会用?存在即合理,这话肯定又它的道理,而且在我之前网上又不是没有定时关机器,照你这么说,那些程序员也没什么成就,也很虚无了。编程就要从最简单的需求做起,是不是觉得这些需求小,没什么大用途就没必要做了呢,那每个程序员初学时打出“Hello World”这个字符串时也是没必要的了。往开了说,现在人们对财务方面的处理基本上都离不开电脑了,照你的说法说开来,人们回到珠算时代,或者回到笔算时代省去买电脑的钱是不是也是最好的。 --------------------编程问答--------------------
引用 7 楼 hjx398 的回复:
不用windows api? 不知道在高级的系统如windows 7中是否有效?现在正好需要关机,测试一下看看再说吧.


谢谢支持,win7下没调试,我换个win7系统实施。 --------------------编程问答--------------------
引用 14 楼 xiaohundangege 的回复:
引用 2 楼 gouhan02 的回复:
你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。


首先,我想说纯技术交流帖,并无炫耀的意思,你自己自负,没必要把别人想的和你一样龌龊。其次,我想很多人没有学过计算机的,他们记住了那些命令了吗,office只有这么智能了可还不一样有很多人不会用?存在即合理,……


顶。那些说别人差的,你们舍得分享自己的代码吗?lz提供代码给我们学习,怎么这么不知趣呢?既然你说lz的东西不好,写一个好的出来给大家看看啊。 --------------------编程问答-------------------- 支持一下,共同进步! --------------------编程问答-------------------- 支持一下,共同进步! --------------------编程问答-------------------- shutdown -s -t 
 此消息通过 【CSDN论坛 Winform测试版】 回复!
龙月.NET的博客 --------------------编程问答-------------------- 八错,写着玩嘛,工作娱乐一体化,呵呵,我就喜欢这种精神 --------------------编程问答--------------------
引用 14 楼 xiaohundangege 的回复:
引用 2 楼 gouhan02 的回复:
你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。


首先,我想说纯技术交流帖,并无炫耀的意思,你自己自负,没必要把别人想的和你一样龌龊。其次,我想很多人没有学过计算机的,他们记住了那些命令了吗,office只有这么智能了可还不一样有很多人不会用?存在即合理,……


不要纠结 --------------------编程问答-------------------- 大度一点 --------------------编程问答-------------------- 想写你继续写 没人说不好 --------------------编程问答--------------------
引用 2 楼 gouhan02 的回复:
你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。


这种人怎么这样 最恶心这种自以为NB 嘲笑别人的人 --------------------编程问答-------------------- 懂得这个原理就好,实际里面还涉及到管道的技术,跨域访问等多种技术。
如果是第三方的,exe,这种做法可能会有些问题。 --------------------编程问答-------------------- 这个程序的描述好像是到点关机,但看winForm又好像是过多长时间关机 ,你到底要描述什么 ?

if (DateTime.Now>=Convert.ToDateTime(lblTime.Text.Trim()))
  {
  timer1.Stop();
  Process process = new Process();
  process.StartInfo.FileName = "shutdown.exe";
  process.StartInfo.UseShellExecute = false;// 不使用Shell来执行,用程序来执行
  process.StartInfo.CreateNoWindow = true; // 执行时不创建新窗口
  process.StartInfo.Arguments = string.Format("{0} -t 0", method);
  process.Start();
  }
--------------------编程问答-------------------- --------------------编程问答-------------------- 需要安装.NET环境不?我是菜鸟 --------------------编程问答-------------------- 是啊,共同学习吗!不要在乎其他人怎么看的!或许他还不如你呢! --------------------编程问答-------------------- 还是要支持一下,别打击人哦 --------------------编程问答-------------------- 要支持一下,好好好 --------------------编程问答-------------------- --------------------编程问答-------------------- 支持一下,学些了 --------------------编程问答--------------------
引用 19 楼 ly_longyue 的回复:
shutdown -s -t 
此消息通过 【CSDN论坛 Winform测试版】 回复!
龙月.NET的博客


呵呵,这个命令我当然知道,不是说了吗,写这个程序全当练手玩。 --------------------编程问答--------------------
引用 26 楼 jacky_341086 的回复:
这个程序的描述好像是到点关机,但看winForm又好像是过多长时间关机 ,你到底要描述什么 ?

if (DateTime.Now>=Convert.ToDateTime(lblTime.Text.Trim()))
  {
  timer1.Stop();
  Process process = new Process();
  process.StartInfo.FileName =……


其实是思路问题,我的目的是过多久之后关机,而逻辑就是当前时间加上你选择的时间得出关机时间,而后再每秒钟对比当前时间是否到达或者超过关机时间,达到或超过就关机。其实这个逻辑有点绕弯了,有更简单的方法,但是当时主要是想看看C#怎么调用系统命令的,所以在这一块就没怎么细究。 --------------------编程问答--------------------
引用 28 楼 relup 的回复:
需要安装.NET环境不?我是菜鸟


呵呵,我也是菜鸟,共同交流嘛。
.net程序网上说可以脱离.net framework运行,但我没研究,你可以试试。 --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,