namespace 修复网络连接
{
public partial class form1 : Form
{
DateTime ds;
int timescan;
System.Diagnostics.Process p
=new System.Diagnostics.Process();
public form1()
{
InitializeComponent();
}
private void renew_Click(object sender, EventArgs e)
{
initial_timer();
}
public void rebuild_con()
{
//p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
//p.StartInfo.FileName = "f:\\test.bat";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("ipconfig /release");
p.StandardInput.WriteLine("ipconfig /renew");
p.StandardInput.WriteLine("arp -d*");
p.StandardInput.WriteLine("nbtstat -r");
p.StandardInput.WriteLine("nbtstat -rr");
p.StandardInput.WriteLine("ipconfig/ flushdns");
//MessageBox.Show(p.StandardOutput.ReadToEnd().ToString());
}
public string NetStatus()
{
ManagementObjectCollection objects;
string status = "";
ManagementObjectSearcher searcher
= new ManagementObjectSearcher
();
searcher.Query.QueryString = "Select * From Win32_NetworkAdapter ";
objects = searcher.Get();
foreach (ManagementObject obj in objects)
{
foreach (PropertyData p in obj.Properties)
{
if (p.Name.Equals("NetConnectionStatus"))
{
if (p.Value != null)
{
status = p.Value.ToString();
}
}
}
}
switch (status)
{
case "0":
return "Disconnected";
case "1":
return "Connecting ...";
case "2":
return "Connected";
case "3":
return "Disconnecting ...";
case "4":
return "Hardware not present";
case "5":
return "Hardware disabled";
case "6":
return "Hardware malfunction";
case "7":
return "Media disconnected";
case "8":
return "Authenticating";
case "9":
return "Authentication succeeded";
case "10":
return "Authentication failed";
default:
return "";
}
}
private void timer1_Tick(object sender, EventArgs e)
{
rebuild_con();
richTextBox1.Text += "第" + (++timescan).ToString() + "次修复......";
if (timescan % 5 == 0)
{
richTextBox1.Text += "\n";
}
string sta = NetStatus();
while (sta == "Connected")
{
stp_exe();
richTextBox1.Text += " \n修复成功!"+"\n已停止修复!";
break;
}
}
private void button1_Click(object sender, EventArgs e)
{
stp_exe();
}
private void timer2_Tick(object sender, EventArgs e)
{
int xv = progressBar1.Value == progressBar1.Maximum ? progressBar1.Value = 0 : progressBar1.Value++;
}
public void stp_exe()
{
timer1.Stop();
timer2.Stop();
progressBar1.Visible = false;
label2.Visible = false;
}
public void initial_timer()
{
try
{
int j = int.Parse(textBox1.Text) * 1000;
if (j < 5000)
{
MessageBox.Show("时间间隔过短,数值不得小于5秒!");
return;
}
timer1.Interval = j;
}
catch (Exception ex)
{
MessageBox.Show("请输入数字类型字符!" + ex.ToString().Remove(60) + "......");
return;
}
timer2.Interval = 500;
timer1.Start();
timer2.Start();
progressBar1.Minimum = 0;
progressBar1.Maximum = 20;
progressBar1.Visible = true;
label2.Visible = true;
}
}
}
//csharp/822