C# 关机长老2.0(定时关机程序+源代码)

作者: 时间: 2012-04-9 分类: 原创软件, 技术文章, 编程开发 | 1条评论 |

今天把以前写的一个关机程序代码贴出来,写得不好,而且控件名字也都懒得命名,别见怪哟, 呵呵。觉得好的请支持下吧。深夜看电影、熬夜玩游戏等等,想必大家总会忘记关机吧?呵呵,如果被父母看见了可就又要挨骂了……针对这种情况,飞度软件工作室特意制作”关机长老”程序,给大家提供一丝方便,如果有什么地方需要改进的,请在下方评论并及时向我们反馈,谢谢!

功能介绍:

01.支持定时关机、延时关机两种方式
02.可以设置密码,防止被意外关闭
03.支持托盘控制:可更新、显示、隐藏、退出
04.用于定时操作 关机、注销、重启

更新历史:

关机长老2.0 2011-02-03
重新采用C#编写,修复时间日期不存在等问题,改善剩余时间显示格式为“剩余 X天 X时 X分 X秒”,进一步优化算法,减少内存开销;
关机长老1.1 2010-10-21
由于易语言误报非常严重,杀软会把易语言写的所有程序一律当做病毒给干掉了,本人无语,所以采用VB重新编写关机长老,1.1版本就此诞生,此版本开始,不再存在误报问题;

关机长老1.0 2010-07-31
首次采用易语言开发关机长老,1.0版本就此诞生;

C# 关机长老2.0(最好用的定时关机程序+源代码)

C# 关机长老2.0(定时关机程序+源代码)

Form1.cs 代码:

 C# Code By wuleba.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
using System;

using System.Diagnostics;

using System.Windows.Forms;



/*

 *

 * 整理:牛A与牛C之间

 * Q  Q:277922950  编程交流群:96020642 、26438718

 * 注意:请勿重复加入以上2个群,一个就好

 * 微博:http://weibo.com/flydoos

 * 博客:http://www.wuleba.com

 *

 */




namespace ElderOff

{

    
public partial class Form1 : Form

    {

        
private string _cmdState = “nothing”;

        
private int _countTime;

        
private int _goTime;



        
public Form1()

        {

            InitializeComponent();

        }



        
private void Form1_Load (object sender, EventArgs e)

        {

            notifyIcon1.Icon = Icon;

            textBox1.Text = DateTime.Now.ToString();

            numericUpDown1.Maximum = 
23;

            numericUpDown2.Maximum = 
59;

            numericUpDown3.Maximum = 
59;

            numericUpDown4.Maximum = 
23;

            numericUpDown5.Maximum = 
59;

            numericUpDown6.Maximum = 
59;

            comboBox1.Text = DateTime.Now.Month.ToString();

            comboBox2.Text = DateTime.Now.Day.ToString();

            numericUpDown1.Value = DateTime.Now.Hour;

            numericUpDown2.Value = DateTime.Now.Minute;

            numericUpDown3.Value = DateTime.Now.Second;

            numericUpDown4.Enabled = 
false;

            numericUpDown5.Enabled = 
false;

            numericUpDown6.Enabled = 
false;

            timer1.Interval = 
1000;

            timer1.Enabled = 
true;

            timer2.Interval = 
500;

            timer2.Enabled = 
true;

            textBox2.Enabled = 
false;

            
for (int i = 1; i < 13; i++)

            {

                comboBox1.Items.Add (i);

            }

            
for (int i = 1; i < 32; i++)

            {

                comboBox2.Items.Add (i);

            }

        }



        
private void radioButton1_CheckedChanged (object sender, EventArgs e)

        {

            
if (radioButton1.Checked)

            {

                numericUpDown4.Enabled = 
false;

                numericUpDown5.Enabled = 
false;

                numericUpDown6.Enabled = 
false;

                comboBox1.Enabled = 
true;

                comboBox2.Enabled = 
true;

                numericUpDown1.Enabled = 
true;

                numericUpDown2.Enabled = 
true;

                numericUpDown3.Enabled = 
true;

                numericUpDown1.Focus();

            }

        }



        
private void radioButton2_CheckedChanged (object sender, EventArgs e)

        {

            
if (radioButton2.Checked)

            {

                numericUpDown4.Enabled = 
true;

                numericUpDown5.Enabled = 
true;

                numericUpDown6.Enabled = 
true;

                numericUpDown1.Enabled = 
true;

                comboBox1.Enabled = 
false;

                comboBox2.Enabled = 
false;

                numericUpDown1.Enabled = 
false;

                numericUpDown2.Enabled = 
false;

                numericUpDown3.Enabled = 
false;

                numericUpDown4.Focus();

            }

        }



        
private void notifyShow() //显示托盘

        {

            Show();

            ShowInTaskbar = 
true;

            WindowState = FormWindowState.Normal;

        }



        
private void notifyHide() //隐藏托盘

        {

            Hide();

            ShowInTaskbar = 
false;

            notifyIcon1.Visible = 
true;

        }



        
private void Form1_Resize (object sender, EventArgs e)

        {

            
if (WindowState == FormWindowState.Minimized)

                notifyHide();

        }



        
public void cancelPlan()

        {

            button1.Enabled = 
true;

            button2.Enabled = 
true;

            button3.Enabled = 
true;

            _cmdState = 
“nothing”;

            _goTime = 
0;

            textBox3.Text = 
“0”;

            MessageBox.Show (
“恭喜!任务已被取消!”“取消任务”,

                             MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }



        
private string f_getValue() //获取txt2的值,因为C#无法直接传递

        {

            
return textBox2.Text;

        }



        
private void button4_Click (object sender, EventArgs e)

        {

            
if (button1.Enabled == false)

            {

                
if (checkBox1.Enabled == false)

                {

                    var f2 = 
new Form2();

                    f2.getvalue += f_getValue;

                    f2.ShowDialog();

                    Debug.Print (f2.BoolPwd.ToString() );

                    
if (f2.BoolPwd.ToString() == “1”)

                    {

                        textBox2.Enabled = 
true;

                        checkBox1.Enabled = 
true;

                        cancelPlan();

                    }

                    f2.Close();

                    f2.Dispose();

                }

                
else

                {

                    cancelPlan();

                }

            }

            
else

            {

                MessageBox.Show (
“注意!请新建任务后再执行取消操作!”“新建任务”,

                                 MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            }

        }



        
private void timer1_Tick (object sender, EventArgs e)

        {

            textBox1.Text = DateTime.Now.ToString();

            
if (_cmdState != “nothing”)

            {

                _goTime += 
1;

                
if (_countTime – _goTime + 1 < 0)

                {

                    textBox3.Text = 
“0”;

                    _cmdState = 
“nothing”;

                }

                
else

                {

                    textBox3.Text = (_countTime – _goTime + 
1) / 86400 + “天 “ +

                                    (_countTime – _goTime + 
1) % 86400 / 3600 + “时 “ +

                                    (_countTime – _goTime + 
1) % 3600 / 60 + “分 “ +

                                    (_countTime – _goTime + 
1) % 60 + “秒”;

                    
if (_countTime – _goTime + 1 == 0)

                    {

                        var p1 = 
new ProcessStartInfo (“shutdown.exe”, _cmdState)

                        {

                            WindowStyle = ProcessWindowStyle.Hidden

                        };

                        
//隐藏窗口

                        Process.Start (p1);

                        Application.ExitThread();

                        Application.Exit();

                    }

                }

            }

        }



        
private void timeControl()

        {

            
if (radioButton1.Checked)

            {

                DateTime startTime =

                    Convert.ToDateTime (DateTime.Now.Year.ToString() + 
“/” +

                                        comboBox1.Text + 
“/” + comboBox2.Text + ” “ +

                                        numericUpDown1.Value + 
“:” + numericUpDown2.Value + “:” +

                                        numericUpDown3.Value);

                TimeSpan endTime = startTime – DateTime.Now; 
//旧的时间减去新的时间

                _countTime = endTime.Days * 86400 + endTime.Hours * 3600 +

                             endTime.Minutes * 
60 + endTime.Seconds; //转为秒

            }

            
else

            {

                _countTime = 
decimal.ToInt32 (numericUpDown4.Value) * 3600 +

                             
decimal.ToInt32 (numericUpDown5.Value) * 60 +

                             
decimal.ToInt32 (numericUpDown6.Value);

            }

            
if (_countTime < 0)

            {

                MessageBox.Show (
“抱歉!您输入的时间已经过期,请重新输入!”“时间有误”,

                                 MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            }

            
else

            {

                
if (checkBox1.Checked == (textBox2.Text != “”) )

                {

                    textBox2.Enabled = 
false;

                    checkBox1.Enabled = 
false;

                }

                _goTime = 
0;

                button1.Enabled = 
false;

                button2.Enabled = 
false;

                button3.Enabled = 
false;

            }

        }



        
private void comboBox1_TextChanged (object sender, EventArgs e)

        {

            
try

            {

                
int n = int.Parse (comboBox1.Text);

                
if (n < 1 || n > 12)

                    comboBox1.Text = DateTime.Now.Month.ToString();

            }

            
catch (Exception)

            {

                comboBox1.Text = DateTime.Now.Month.ToString();

            }

        }



        
private void comboBox2_TextChanged (object sender, EventArgs e)

        {

            
try

            {

                
int n = int.Parse (comboBox2.Text);

                
if (n < 1 || n > 31)

                {

                    comboBox2.Text = DateTime.Now.Day.ToString();

                }

                
else

                {

                    
if (comboBox1.Text == “2”)

                    {

                        
if (DateTime.IsLeapYear (DateTime.Now.Year) ) //如果是闰年二月

                        {

                            
if (Convert.ToInt32 (comboBox2.Text) > 28)

                                comboBox2.Text = 
“28”;

                        }

                        
else

                        {

                            
if (Convert.ToInt32 (comboBox2.Text) > 29)

                                comboBox2.Text = 
“29”;

                        }

                    }

                    
else if (comboBox1.Text == “4” ||

                             comboBox1.Text == 
“6” || comboBox1.Text == “9” ||

                             comboBox1.Text == 
“11”)

                    {

                        
if (Convert.ToInt32 (comboBox2.Text) > 30)

                            comboBox2.Text = 
“30”;

                    }

                }

            }

            
catch (Exception)

            {

                comboBox2.Text = DateTime.Now.Day.ToString();

            }

        }



        
private void Form1_FormClosing (object sender, FormClosingEventArgs e)

        {

            notifyIcon1.Icon = 
null;

            notifyIcon1.Visible = 
false;

            Application.Exit();

        }



        
private void checkBox1_CheckedChanged (object sender, EventArgs e)

        {

            
if (checkBox1.Checked)

            {

                textBox2.Enabled = 
true;

                textBox2.Focus();

            }

            
else

            {

                textBox2.Enabled = 
false;

            }

        }



        
private void button1_Click (object sender, EventArgs e)

        {

            timeControl();

            _cmdState = 
“-s -f -t 0”//关机

            label4.Text = “剩余关机时间”;

        }



        
private void button2_Click (object sender, EventArgs e)

        {

            timeControl();

            _cmdState = 
“-l”//注销

            label4.Text = “剩余注销时间”;

        }



        
private void button3_Click (object sender, EventArgs e)

        {

            timeControl();

            _cmdState = 
“-r -f -t 0”// 重启

            label4.Text = “剩余重启时间”;

        }



        
private void notifyIcon1_DoubleClick (object sender, EventArgs e)

        {

            notifyShow();

        }



        
private void toolStripMenuItem1_Click (object sender, EventArgs e)

        {

            notifyShow();

        }



        
private void toolStripMenuItem2_Click (object sender, EventArgs e)

        {

            notifyHide();

        }



        
private void toolStripMenuItem3_Click (object sender, EventArgs e)

        {

            Process.Start (
“http://www.wuleba.com”);

        }



        
private void toolStripMenuItem4_Click (object sender, EventArgs e)

        {

            notifyHide();

            Application.Exit();

        }



        
private void timer2_Tick (object sender, EventArgs e)

        {

        }

    }

}

Form2.cs代码:

 C# Code By wuleba.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;

using System.Windows.Forms;



/*

 *

 * 整理:牛A与牛C之间

 * Q  Q:277922950  编程交流群:96020642 、26438718

 * 注意:请勿重复加入以上2个群,一个就好

 * 微博:http://weibo.com/flydoos

 * 博客:http://www.wuleba.com

 *

 */




namespace ElderOff

{

    
public partial class Form2 : Form

    {

        
#region Delegates



        
public delegate string GetvalueHandler();



        
#endregion



        
public Form2()

        {

            InitializeComponent();

        }



        
public int BoolPwd //判断密码是否正确

        {

            get { 
return textBox1.Text == getvalue() ? 1 : 0; }

        }



        
public event GetvalueHandler getvalue;



        
private void button1_Click (object sender, EventArgs e)

        {

            
if (BoolPwd.ToString() == “1”)

                Hide();

            
else

                MessageBox.Show (
“抱歉!您输入的密码有误,请重新输入!”“取消任务”,

                                 MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            textBox1.Focus();

        }



        
private void button2_Click (object sender, EventArgs e)

        {

            Close();

            Dispose();

        }



        
private void Form2_Load (object sender, EventArgs e)

        {

            var f1 = 
new Form1();

            Icon = f1.Icon;

        }

    }

}

安装说明:2K/2K3/XP 系统下必须先安装.NET Framework 2.0 之后才能运行本程序,否则不能使用。

下载方法:打开链接–输入验证码–打开下载列表–左上角有一个免费用户下载–普通不限速下载。

下载地址:程序下载 | 源码下载 |

本文采用 CC协议 发布,转载请注明:转载自 吾乐吧软件站

本文链接地址:http://www.wuleba.com/?p=131

一条评论 给“C# 关机长老2.0(定时关机程序+源代码)”

  1. 支持开源,谢谢

发表评论


微软MSDN资源免费订阅,MSDN 我告诉你