62,074
社区成员
发帖
与我相关
我的任务
分享
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Net;
using System.Net.NetworkInformation;
namespace Monitor
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.notifyIcon1.Visible = false;
this.lblstate.Text = "Waiting Your Clicking.";
}
#region 启动监测
private void StartMonitor_Click(object sender, EventArgs e)
{
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
}
void NetworkChange_NetworkAvailabilityChanged (object sender, NetworkAvailabilityEventArgs e)
{
if (e.IsAvailable == true)
{
this.lblstate.Text = "Success";
}
else
{
this.lblstate.Text = "False";
this.timerstart.Start();
}
}
#endregion
#region 再次检测
private void ReMonitor_Click(object sender, EventArgs e)
{
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged1);
}
void NetworkChange_NetworkAvailabilityChanged1(object sender, NetworkAvailabilityEventArgs e)
{
if (e.IsAvailable == true)
{
this.timerstart.Stop();
this.lblstate.Text = "Success";
}
else
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
//关机:shutdown -s
//休眠:shutdown -h(适用但不限于Windows Server 2003)
p.StandardInput.WriteLine("shutdown -h");
p.StandardInput.WriteLine("exit");
p.WaitForExit();
p.Close();
}
}
#endregion
#region 停止监测
private void StopMonitor_Click(object sender, EventArgs e)
{
timerstart.Stop();
this.lblstate.Text = "Please Try Again.";
this.lbltime.Text = null;
}
#endregion
#region 退出程序
private void Exit_Click(object sender, EventArgs e)
{
Application.Exit();
}
#endregion
#region 最小化 &恢复窗口
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide();
this.notifyIcon1.Visible = true;
}
}
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
}
#endregion
}
}