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

xiaohundangege 2010-10-08 07:51:33
好长时间没写代码了,前几天闲着没事的时候写了一个定时关机器,真的挺有成就感的,哈哈。

编译过的程序已经传到网上,大家可以下载试试玩。
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();
}
}
}
}

最后上张运行效果图:

...全文
302 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohundangege 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 relup 的回复:]
需要安装.NET环境不?我是菜鸟
[/Quote]

呵呵,我也是菜鸟,共同交流嘛。
.net程序网上说可以脱离.net framework运行,但我没研究,你可以试试。
xiaohundangege 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 jacky_341086 的回复:]
这个程序的描述好像是到点关机,但看winForm又好像是过多长时间关机 ,你到底要描述什么 ?

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

其实是思路问题,我的目的是过多久之后关机,而逻辑就是当前时间加上你选择的时间得出关机时间,而后再每秒钟对比当前时间是否到达或者超过关机时间,达到或超过就关机。其实这个逻辑有点绕弯了,有更简单的方法,但是当时主要是想看看C#怎么调用系统命令的,所以在这一块就没怎么细究。
xiaohundangege 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ly_longyue 的回复:]
shutdown -s -t
此消息通过 【CSDN论坛 Winform测试版】 回复!
龙月.NET的博客
[/Quote]

呵呵,这个命令我当然知道,不是说了吗,写这个程序全当练手玩。
tongfeng1981 2010-11-07
  • 打赏
  • 举报
回复
支持一下,学些了
龍月 2010-11-07
  • 打赏
  • 举报
回复
shutdown -s -t 此消息通过 【CSDN论坛 Winform测试版】 回复! 龙月.NET的博客
凌江语 2010-11-07
  • 打赏
  • 举报
回复
支持一下,共同进步!
fangxqian 2010-11-07
  • 打赏
  • 举报
回复
支持一下,共同进步!
wangyeli 2010-11-07
  • 打赏
  • 举报
回复
要支持一下,好好好
HaveOneDream 2010-11-07
  • 打赏
  • 举报
回复
还是要支持一下,别打击人哦
SunnyBoy 2010-11-07
  • 打赏
  • 举报
回复
是啊,共同学习吗!不要在乎其他人怎么看的!或许他还不如你呢!
relup 2010-11-07
  • 打赏
  • 举报
回复
需要安装.NET环境不?我是菜鸟
tony-src 2010-11-07
  • 打赏
  • 举报
回复
这个程序的描述好像是到点关机,但看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();
}
buer 2010-11-07
  • 打赏
  • 举报
回复
懂得这个原理就好,实际里面还涉及到管道的技术,跨域访问等多种技术。
如果是第三方的,exe,这种做法可能会有些问题。
xxmiiiiiiiiii 2010-11-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gouhan02 的回复:]

你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。
[/Quote]

这种人怎么这样 最恶心这种自以为NB 嘲笑别人的人
baifudage 2010-11-07
  • 打赏
  • 举报
回复
想写你继续写 没人说不好
baifudage 2010-11-07
  • 打赏
  • 举报
回复
大度一点
baifudage 2010-11-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xiaohundangege 的回复:]
引用 2 楼 gouhan02 的回复:
你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。


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

不要纠结
OracleCer 2010-11-07
  • 打赏
  • 举报
回复
八错,写着玩嘛,工作娱乐一体化,呵呵,我就喜欢这种精神
事理 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xiaohundangege 的回复:]
引用 2 楼 gouhan02 的回复:
你的成就很虚无,不就是调用一个SHELL关机命令么,用的着写程序这么复杂。
你打开cmd,直接输入一下不就可以了。这些行代码都省下来了。


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

顶。那些说别人差的,你们舍得分享自己的代码吗?lz提供代码给我们学习,怎么这么不知趣呢?既然你说lz的东西不好,写一个好的出来给大家看看啊。
xiaohundangege 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hjx398 的回复:]
不用windows api? 不知道在高级的系统如windows 7中是否有效?现在正好需要关机,测试一下看看再说吧.
[/Quote]

谢谢支持,win7下没调试,我换个win7系统实施。
加载更多回复(11)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧