当前位置:  编程技术>.net/c#/asp.net

C#关机小程序源码

    来源: 互联网  发布时间:2014-10-15

    本文导语:  下面是运行的效果图核心代码: 代码如下: 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 * 日期:20...

下面是运行的效果图



核心代码:

代码如下:

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();
}
///
/// 窗体加载事件
///
///
///
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;
}
}
///
/// 显示窗体
///
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);
}
}
///
/// 隐藏托盘
///
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();//程序结束
}
}
}
}
///
/// 定时关机事件
///
///
///
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();
}
///
/// 重启事件
///
///
///
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();
}
///
/// 单击取消发生的事件
///
///
///
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);
}
///
/// 提醒事件
///
public void Allow()
{
DialogResult result;
result = MessageBox.Show("程序将自动最小化到托盘", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (result == DialogResult.Yes)
{
this.windowHide();
}
}
}
}

源码打包下载

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么用init 0关机比点关机图标关机要快一些呢?
  • solaris 关机时报RPC未注册而无法关机
  • 请教有关linux驱动开发,按关机键关机时,驱动应作哪些结束工作?
  • ubuntu fedora关机输入shutdown -P now就行。redhat怎么是用shutdown -h now关机
  • 兄弟们,Linux Fedora10中,那个电源管理里面,关机按钮按下去还要等待30S才能关机,怎么修改这个时间?
  • linux下怎么实现软关机!
  • 如何实现WINDOWS的定时关机?
  • Unix/linux的关机指令是什么?
  • linux 命令行如何关机?
  • aix系统reboot命令使系统关机了,为什么?
  • ubuntu关机的不断电源有什么作用
  • 新手,用ubuntu,只能强制关机,命令不行啊。。。。。
  • Ubuntu10.04无法电源关机
  • solaris9 (5.9)的普通用户关机问题
  • Magic Linux 不能关机
  • linux关机后会出现sh-3.1#
  • linux服务器自动关机了???????????
  • 我要关机执行一些指令 ,应放在那儿。
  • linux 如何关机?
  • QT:如何实现自动关机?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3