一个调用命令行改IP的BUTTON,代码如下:
private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "cmd"; //确定程序名
p.StartInfo.UseShellExecute = false; //Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向输入
p.StartInfo.RedirectStandardOutput = true; //重定向输出
//p.StartInfo.RedirectStandardError = true; 重定向输出错误
p.StartInfo.CreateNoWindow = true; //设置置不显示示窗口
p.Start();
p.StandardInput.WriteLine("netsh interface ip set address name=\"本地连接\" source=dhcp");
p.StandardInput.WriteLine("netsh interface ip set dns name=\"本地连接\" source=dhcp");
p.Close();
MessageBox.Show("成功。");
}问题:点击按钮后,马上弹出 成功,但IP地址还在改变之中,若马上关闭程序,则无法判断p.StandardInput.WriteLine("netsh interface ip set dns name=\"本地连接\" source=dhcp") 是否被执行了,有什么办法,然其完整改变IP后 才弹出 成功 对话框?
由于本人新手,希望懂得人解释详细点,谢谢。
private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "cmd"; //确定程序名
p.StartInfo.UseShellExecute = false; //Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向输入
p.StartInfo.RedirectStandardOutput = true; //重定向输出
//p.StartInfo.RedirectStandardError = true; 重定向输出错误
p.StartInfo.CreateNoWindow = true; //设置置不显示示窗口
p.Start();
p.StandardInput.WriteLine("netsh interface ip set address name=\"本地连接\" source=dhcp");
p.StandardInput.WriteLine("netsh interface ip set dns name=\"本地连接\" source=dhcp");
p.Close();
MessageBox.Show("成功。");
}问题:点击按钮后,马上弹出 成功,但IP地址还在改变之中,若马上关闭程序,则无法判断p.StandardInput.WriteLine("netsh interface ip set dns name=\"本地连接\" source=dhcp") 是否被执行了,有什么办法,然其完整改变IP后 才弹出 成功 对话框?
由于本人新手,希望懂得人解释详细点,谢谢。
p.StandardInput.WriteLine("netsh interface ip set address name=\"本地连接\" source=dhcp");
p.StandardInput.WriteLine("netsh interface ip set dns name=\"本地连接\" source=dhcp");
后面加一个循环,每延迟几秒去读取返回信息,直到读取返回信息后为止,估计能行,试试看吧。当然,要注意死循环控制哟!
{
process.Kill();
}