手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#关机小程序源码
C#关机小程序源码
摘要:下面是运行的效果图核心代码:复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usi...

下面是运行的效果图

C#关机小程序源码1

核心代码:

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

/*

*

* 整理:张晓天

* Q Q:977602650

* 日期:2012-03-29

*

*/

namespace ExitComputer

{

public partial class Form1 : Form

{

int goTime = 0;//程序运行时间

string cmd = null;//写入shutdown的命令

int countTime = 0;//到程序执行的时间

public Form1()

{

InitializeComponent();

}

/// <summary>

/// 窗体加载事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void Form1_Load(object sender, EventArgs e)

{

nfiPic.Icon = this.Icon;//指定系统的图标

label1.Text = DateTime.Now.ToString("yyyy年 MM月 dd日 HH :mm :ss");//系统时间

nudHour.Maximum = 23;

nudMinutes.Maximum = 59;

nudSecond.Maximum = 59;//指定控件的最大值

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

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

nudHour.Value = DateTime.Now.Hour;

nudMinutes.Value = DateTime.Now.Minute;

nudSecond.Value = DateTime.Now.Second;//指定控件的值

//指定时间控件发生的频率

tmrTime.Interval = 1000;

tmrTime.Enabled = true;

//为月和日赋值

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

{

cboMonth.Items.Add(i);

}

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

{

cboDay.Items.Add(i);

}

//指定不可用的控件

cboMonth.Enabled = false;

cboDay.Enabled = false;

nudHour.Enabled = false;

nudMinutes.Enabled = false;

nudSecond.Enabled = false;

btnExit.Enabled = false;

}

//定时的属性改写时事件

private void chkTiming_CheckedChanged(object sender, EventArgs e)

{

if (chkTiming.Checked == true)

{

cboMonth.Enabled = true;

cboDay.Enabled = true;

nudHour.Enabled = true;

nudMinutes.Enabled = true;

nudSecond.Enabled = true;

}

else

{

cboMonth.Enabled = false;

cboDay.Enabled = false;

nudHour.Enabled = false;

nudMinutes.Enabled = false;

nudSecond.Enabled = false;

}

}

/// <summary>

/// 显示窗体

/// </summary>

private void windowShow()

{

this.Show();

this.ShowInTaskbar = true;

this.WindowState = FormWindowState.Normal;

}

//重写事件实现气泡提示

protected override void OnSizeChanged(EventArgs e)

{

base.OnSizeChanged(e);

if (WindowState == FormWindowState.Minimized)

{

nfiPic.ShowBalloonTip(30);

}

}

/// <summary>

/// 隐藏托盘

/// </summary>

private void windowHide()

{

this.Hide();

this.ShowInTaskbar = false;

nfiPic.Visible = true;

nfiPic.ShowBalloonTip(30);

}

//最小化窗体时的事件

private void Form1_Resize(object sender, EventArgs e)

{

if (this.WindowState == FormWindowState.Minimized)

this.windowHide();

}

//鼠标双击托盘图标时的事件

private void nfiPic_MouseDoubleClick(object sender, MouseEventArgs e)

{

this.windowShow();

}

//保证选择的月份是正确的

private void cboMonth_TextChanged(object sender, EventArgs e)

{

try

{

int temp1 = int.Parse(cboMonth.Text);

int temp = int.Parse(cboDay.Text);

if (temp1 < 1 || temp1 > 12)

{

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

}

if (cboMonth.Text == "2")

{

if (DateTime.IsLeapYear(DateTime.Now.Year) == true)//判断今年是否为闰年

{

if (temp > 28)

{

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

}

}

else if (temp > 29)

{

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

}

}

else if (cboMonth.Text == "4" || cboMonth.Text == "6" || cboMonth.Text == "9" || cboMonth.Text == "11")

{

if (temp > 30)

{

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

}

}

}

catch (Exception)

{

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

}

}

//保证选择的天数是正确的

private void cboDay_TextChanged(object sender, EventArgs e)

{

try

{

int temp = int.Parse(cboDay.Text);

if (temp < 1 || temp > 31)

{

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

}

//判断月份

if (cboMonth.Text == "2")

{

if (DateTime.IsLeapYear(DateTime.Now.Year) == true)//判断今年是否为闰年

{

if (temp > 28)

{

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

}

}

else if (temp > 29)

{

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

}

}

else if (cboMonth.Text == "4" || cboMonth.Text == "6" || cboMonth.Text == "9" || cboMonth.Text == "11")

{

if (temp > 30)

{

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

}

}

}

catch (Exception)

{

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

}

}

//程序执行时给CountTime赋的值

private bool timeControl()

{

if (chkTiming.Checked == true)

{

DateTime startTime = Convert.ToDateTime(DateTime.Now.Year.ToString() + "/" + cboMonth.Text + "/" +

cboDay.Text + " " + nudHour.Value.ToString() + ":" + nudMinutes.Value.ToString() + ":" + nudSecond.Value.ToString());

TimeSpan endtime = startTime - DateTime.Now;

countTime = endtime.Days * 86400 + endtime.Hours * 3600 + endtime.Minutes * 60 + endtime.Seconds;

}

if (countTime < 0)

{

MessageBox.Show("对不起!您选择的时间有误!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

//让窗体回到初始化时的状态

chkTiming.Enabled = true;

btnLogout.Enabled = true;

btnOver.Enabled = true;

btnAgain.Enabled = true;

btnExit.Enabled = false;

tmrTime.Enabled = false;

return false;

}

tmrTime.Enabled = true;

return true;

}

//时间控件每次发生的事件

private void tmrTime_Tick(object sender, EventArgs e)

{

label1.Text = DateTime.Now.ToString("yyyy年 MM月 dd日 HH :mm :ss");

if (cmd != null)

{

goTime += 1;

if (countTime - goTime + 5 < 0)

{

txtRemind.Text = "0";

cmd = null;

}

else

{

//在提示文本中显示的内容

int temp = countTime - goTime + 1;

txtRemind.Text = temp / 86400 + "天 " + temp % 86400 / 3600 + "时 " + temp % 3600 / 60 + "分 " + temp % 60 + "秒 ";

if (countTime - goTime + 1 == 0) //判断时间是否到了

{

System.Diagnostics.ProcessStartInfo p1 = new System.Diagnostics.ProcessStartInfo("shutdown.exe", cmd);

p1.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

System.Diagnostics.Process.Start(p1);

Application.ExitThread();

Application.Exit();//程序结束

}

}

}

}

/// <summary>

/// 定时关机事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnOver_Click(object sender, EventArgs e)

{

if (!timeControl()) return;

cmd = "-s -t 0";

lblRemind.Text = "剩余时间";

chkTiming.Checked = false;

chkTiming.Enabled = false;

btnExit.Enabled = true;

Allow();

}

/// <summary>

/// 重启事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnAgain_Click(object sender, EventArgs e)

{

if (!timeControl()) return;

cmd = "-r -t 0";

lblRemind.Text = "剩余时间";

chkTiming.Checked = false;

chkTiming.Enabled = false;

btnExit.Enabled = true;

Allow();

}

private void btnLogout_Click(object sender, EventArgs e)

{

if (!timeControl()) return;

cmd = "-l";

lblRemind.Text = "剩余时间";

chkTiming.Checked = false;

chkTiming.Enabled = false;

btnExit.Enabled = true;

Allow();

}

private void tsmiShow_Click(object sender, EventArgs e)

{

this.windowShow();

}

private void tsmiExit_Click(object sender, EventArgs e)

{

this.Dispose();

}

/// <summary>

/// 单击取消发生的事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnExit_Click(object sender, EventArgs e)

{

btnLogout.Enabled = true;

btnOver.Enabled = true;

btnAgain.Enabled = true;

btnExit.Enabled = false;

cmd = null;

goTime = 0;

countTime = 0;

txtRemind.Text = "0";

lblRemind.Text = "关机提示";

chkTiming.Enabled = true;

MessageBox.Show("任务已被成功取消", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

/// <summary>

/// 提醒事件

/// </summary>

public void Allow()

{

DialogResult result;

result = MessageBox.Show("程序将自动最小化到托盘", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

if (result == DialogResult.Yes)

{

this.windowHide();

}

}

}

}

源码打包下载

【C#关机小程序源码】相关文章:

C#实现写入与读出文本文件的实例代码

用C#获取硬盘序列号,CPU序列号,网卡MAC地址的源码

c# 开机启动项的小例子

C#中实现网段扫描的代码

c# 方法可变数量的参数

C#制作鹰眼的详细全过程(带注释)实例代码

深入C#任务管理器中应用程序选项隐藏程序本身的方法详解

C#简单获取时间差的小例子

用C#写的ADSL拨号程序的代码示例

C#:(变量)字段和局部变量的作用域冲突

精品推荐
分类导航