以下為一個調用ping命令檢測網絡的代碼示例.通過該示例看到,可以用c#調用dos內部命令及命令行程式,並取得相應的結果,而且這些程式的執行過程不會顯示出來.從而我們在需要調用外部程式時可以將其嵌入到自已的程式中使用了.
using System.Diagnostics;
private
static
string
CmdPing(
string
strIp)
{
Process p = new Process();
// 设定程序名
p.StartInfo.FileName = " cmd.exe " ;
// 关闭Shell的使用
p.StartInfo.UseShellExecute = false ;
// 重定向标准输入
p.StartInfo.RedirectStandardInput = true ;
// 重定向标准输出
p.StartInfo.RedirectStandardOutput = true ;
// 重定向错误输出
p.StartInfo.RedirectStandardError = true ;
// 设置不显示窗口
p.StartInfo.CreateNoWindow = true ;
string pingrst;
// 启动进程
p.Start();
// 输入要执行的命令,这里就是ping
p.StandardInput.WriteLine( " ping -n 1 " + strIp);
p.StandardInput.WriteLine( " exit " );
// 从输出流获取命令执行结果
string strRst = p.StandardOutput.ReadToEnd();
// 分析strRst字符串就可以知道网络的连接情况
if (strRst.IndexOf( " (0% loss) " ) != - 1 )
pingrst = " 连接 " ;
else if (strRst.IndexOf( " Destination host unreachable. " ) != - 1 )
pingrst = " 无法到达目的主机 " ;
else if (strRst.IndexOf( " Request timed out. " ) != - 1 )
pingrst = " 超时 " ;
else if (strRst.IndexOf( " Unknown host " ) != - 1 )
pingrst = " 无法解析主机 " ;
else
pingrst = strRst;
p.Close();
return pingrst;
}
{
Process p = new Process();
// 设定程序名
p.StartInfo.FileName = " cmd.exe " ;
// 关闭Shell的使用
p.StartInfo.UseShellExecute = false ;
// 重定向标准输入
p.StartInfo.RedirectStandardInput = true ;
// 重定向标准输出
p.StartInfo.RedirectStandardOutput = true ;
// 重定向错误输出
p.StartInfo.RedirectStandardError = true ;
// 设置不显示窗口
p.StartInfo.CreateNoWindow = true ;
string pingrst;
// 启动进程
p.Start();
// 输入要执行的命令,这里就是ping
p.StandardInput.WriteLine( " ping -n 1 " + strIp);
p.StandardInput.WriteLine( " exit " );
// 从输出流获取命令执行结果
string strRst = p.StandardOutput.ReadToEnd();
// 分析strRst字符串就可以知道网络的连接情况
if (strRst.IndexOf( " (0% loss) " ) != - 1 )
pingrst = " 连接 " ;
else if (strRst.IndexOf( " Destination host unreachable. " ) != - 1 )
pingrst = " 无法到达目的主机 " ;
else if (strRst.IndexOf( " Request timed out. " ) != - 1 )
pingrst = " 超时 " ;
else if (strRst.IndexOf( " Unknown host " ) != - 1 )
pingrst = " 无法解析主机 " ;
else
pingrst = strRst;
p.Close();
return pingrst;
}