C#环境下如何在WinForm中ping一个网站

作者:互联网   出处:控件中国网   2014-11-05 19:18:13   阅读:1

C#中运行命令行截取输出流的例子本文介绍的是C#喜欢哦你好运行命令行截取输出流的一个例子,希望可以通过该例子使大家对C#命令行有更多了解。

  此例旨在实现在WinForm中ping一个网站,并且将ping的结果显示在一个文本框中。

  窗体设计器产生的代码:

 namespace RunCMD
  {
  partial class CMDForm
  {
  /// 
  /// 必需的设计器变量。
  /// 
  private System.ComponentModel.IContainer components = null;
  /// 
  /// 清理所有正在使用的资源。
  /// 
  /// 如果应释放托管资源,为 true;否则为 false。
  protected override void Dispose(bool disposing)
  {
  if (disposing && (components != null))
  {
  components.Dispose();
  }
  base.Dispose(disposing);
  }
  #region Windows 窗体设计器生成的代码
  /// 
  /// 设计器支持所需的方法 - 不要
  /// 使用代码编辑器修改此方法的内容。
  /// 
  private void InitializeComponent()
  {
  this.label1 = new System.Windows.Forms.Label();
  this.txtCommand = new System.Windows.Forms.TextBox();
  this.btnExecute = new System.Windows.Forms.Button();
  this.tbResult = new System.Windows.Forms.TextBox();
  this.SuspendLayout();
  //
  // label1
  //
  this.label1.AutoSize = true;
  this.label1.Location = new System.Drawing.Point(6, 11);
  this.label1.Name = "label1";
  this.label1.Size = new System.Drawing.Size(29, 12);
  this.label1.TabIndex = 0;
  this.label1.Text = "ping";
  //
  // txtCommand
  //
  this.txtCommand.Location = new System.Drawing.Point(41, 8);
  this.txtCommand.Name = "txtCommand";
  this.txtCommand.Size = new System.Drawing.Size(269, 21);
  this.txtCommand.TabIndex = 1;
  //
  // btnExecute
  //
  this.btnExecute.Location = new System.Drawing.Point(316, 6);
  this.btnExecute.Name = "btnExecute";
  this.btnExecute.Size = new System.Drawing.Size(75, 23);
  this.btnExecute.TabIndex = 2;
  this.btnExecute.Text = "执行";
  this.btnExecute.UseVisualStyleBackColor = true;
  this.btnExecute.Click += new System.EventHandler(this.btnExecute_Click);
  //
  // tbResult
  //
  this.tbResult.Location = new System.Drawing.Point(8, 47);
  this.tbResult.Multiline = true;
  this.tbResult.Name = "tbResult";
  this.tbResult.ScrollBars = System.Windows.Forms.ScrollBars.Both;
  this.tbResult.Size = new System.Drawing.Size(383, 292);
  this.tbResult.TabIndex = 3;
  //
  // CMDForm
  //
  this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
  this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  this.ClientSize = new System.Drawing.Size(403, 364);
  this.Controls.Add(this.tbResult);
  this.Controls.Add(this.btnExecute);
  this.Controls.Add(this.txtCommand);
  this.Controls.Add(this.label1);
  this.Name = "CMDForm";
  this.Text = "运行Command的例子";
  this.ResumeLayout(false);
  this.PerformLayout();
  }
  #endregion
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.TextBox txtCommand;
  private System.Windows.Forms.Button btnExecute;
  private System.Windows.Forms.TextBox tbResult;
  }
  }

      关键部分代码:

  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;
  namespace RunCMD
  {
  /**
  * 作者:周公
  * blog:http://blog.csdn.net/zhoufoxcn
  * 日期:2007-07-07
  *
  * */
  public partial class CMDForm : Form
  {
  public CMDForm()
  {
  InitializeComponent();
  }
  private void btnExecute_Click(object sender, EventArgs e)
  {
  tbResult.Text = "";
  ProcessStartInfo start = new ProcessStartInfo("Ping.exe");//设置运行的命令行文件问ping.exe文件,这个文件系统会自己找到
  //如果是其它exe文件,则有可能需要指定详细路径,如运行winRar.exe
  start.Arguments = txtCommand.Text;//设置命令参数
  start.CreateNoWindow = true;//不显示dos命令行窗口
  start.RedirectStandardOutput = true;//
  start.RedirectStandardInput = true;//
  start.UseShellExecute = false;//是否指定操作系统外壳进程启动程序
  Process p=Process.Start(start);
  StreamReader reader = p.StandardOutput;//截取输出流
  string line = reader.ReadLine();//每次读取一行
  while (!reader.EndOfStream)
  {
  tbResult.AppendText(line+" ");
  line = reader.ReadLine();
  }
  p.WaitForExit();//等待程序执行完退出进程
  p.Close();//关闭进程
  reader.Close();//关闭流
  }
  }
  }

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat