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;
using System.IO;
using System.IO.Compression;
namespace shutdown
{
public partial class Form1 : Form
{
private static string PathBase = Application.StartupPath; //获取应用程序启动路径
string ShutDownTime = "";
public Form1()
{
InitializeComponent();
}
private void 定时关机ToolStripMenuItem_Click(object sender, EventArgs e)
{
关机时间toolStripTextBox1.Text = DateTime.Now.ToLongTimeString ();
关机时间toolStripTextBox1.Visible = true;
}
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true;
this.Visible = false;
base.OnClosing(e);
}
public void CloseExit()
{
//實例一個Process類,啟動一個獨立進程
Process p = new Process();
p.StartInfo.FileName = "cmd.exe"; //設定程序名
p.StartInfo.Arguments = "/c " + "shutdown -s -t 0"; //設定程式執行參數
p.StartInfo.UseShellExecute = false; //關閉Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向標準輸入
p.StartInfo.RedirectStandardOutput = true; //重定向標準輸出
p.StartInfo.RedirectStandardError = true; //重定向錯誤輸出
p.StartInfo.CreateNoWindow = true; //設置不顯示窗口
p.Start(); //啟動
}
private void 关机时间toolStripTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter && 关机时间toolStripTextBox1.Text != "")
{
try
{
DateTime time = DateTime.Parse(关机时间toolStripTextBox1.Text);
TimeSpan span = new TimeSpan(time.Hour, time.Minute, 0);
if (span.CompareTo(new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0)) == 0) //当前关机时间
{
DialogResult result = MessageBox.Show("是否现在关机!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (result == DialogResult.OK)
{
//MynotifyIcon.Icon = Icon.ExtractAssociatedIcon(PathBase + "\\Images\\" + "ShutDown_notifyIcon.ico");
//
//调用关机程序
//
CloseExit();
}
else
{
return;
}
}
if (span.CompareTo(new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0)) < 0) //过去关机时间
{
MessageBox.Show("此时间已是过去时间,设定无效", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (span.CompareTo(new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0)) > 0) //有效关机时间
{
ShutDownTime = 关机时间toolStripTextBox1.Text;
MessageBox.Show("成功设置定时关机,计算机将于“" + ShutDownTime + "”关机…… *︶︵︶*", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.关机时间toolStripTextBox1.Visible = false;
CloseExit();
//
//调用关机程序
//
}
}
catch
{
MessageBox.Show("日期格式不正确,请重新输入。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
if (e.KeyChar == (char)Keys.Enter && 关机时间toolStripTextBox1.Text == "")
{
关机时间toolStripTextBox1.Visible = false;
}
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("是否现在关机!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (result == DialogResult.Yes)
{
CloseExit();
}
}
}
}
button1_Click能实现关机啊,如果是关机时间toolStripTextBox1_KeyPress()我倒是看到个问题
DialogResult result = MessageBox.Show("是否现在关机!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); if (result == DialogResult.OK) 应该是DialogResult.Yes……
哈哈,不错不错...
额?我的button1_click不能实现关机,反而弹出一个和form一样的窗口,这是什么原因啊?还有,我的代码是dialogresult.yes啊
@会当凌绝顶: 不是吧?我用了你的方法怎么可以实现啊……不行用断点试试吧,看看哪儿有问题!
1.有没有执行CloseExit 方法;
2.你在自己机器上面运行shutdown -s -t 0 可以关机不
closeexit方法可以关机,我专门试过。还有为什么点击现在关机会弹出一个和form一样的窗体?
看这个代码;有源代码下载下来研究吧;http://www.cnblogs.com/flydoos/archive/2011/08/20/2146472.html
我现在主要是想知道我的代码有什么问题?
@会当凌绝顶: 你的代码我没有看,不过你把我发你的下载下来看看吧,把他的关机代码弄过来去;你的应该是关机代码有问题;那调用进程的不怎么好;最好用api操作;
@HuaFang: 能帮忙看一下么,你推荐的那个代码我下了,但是我代码中的关机代码单独运行是可以成功。
@会当凌绝顶:不会吧;你没有看到下载链接吗;你自己下载下来吧;