當前位置:編程學習大全網 - 源碼下載 - 我想用c#調用netstat -a命令顯示在窗體裏面 請問可不可以給我壹段完整的源代碼

我想用c#調用netstat -a命令顯示在窗體裏面 請問可不可以給我壹段完整的源代碼

public delegate void DelReadStdOutput(string result);

public delegate void DelReadErrOutput(string result);

public partial class Form1 : Form

{

// 2.定義委托事件

public event DelReadStdOutput ReadStdOutput;

public event DelReadErrOutput ReadErrOutput;

public Form1()

{

InitializeComponent();

Init();

}

private void Init()

{

//3.將相應函數註冊到委托事件中

ReadStdOutput += new DelReadStdOutput(ReadStdOutputAction);

ReadErrOutput += new DelReadErrOutput(ReadErrOutputAction);

}

private void button1_Click(object sender, EventArgs e)

{

// 啟動進程執行相應命令,此例中以執行ping.exe為例

//參數-a我這邊得不到結果,試了下-an可以得到結果

RealAction("NETSTAT", "-an");

}

private void RealAction(string StartFileName, string StartFileArg)

{

ProcessStartInfo startInfo = new ProcessStartInfo();

Process CmdProcess = new Process();

CmdProcess.StartInfo.WorkingDirectory = @"C:\Windows\System32";

CmdProcess.StartInfo.FileName = StartFileName; // 命令

CmdProcess.StartInfo.Arguments = StartFileArg; // 參數

CmdProcess.StartInfo.CreateNoWindow = true; // 不創建新窗口

CmdProcess.StartInfo.UseShellExecute = false;

CmdProcess.StartInfo.RedirectStandardInput = true; // 重定向輸入

CmdProcess.StartInfo.RedirectStandardOutput = true; // 重定向標準輸出

CmdProcess.StartInfo.RedirectStandardError = true; // 重定向錯誤輸出

CmdProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

CmdProcess.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);

CmdProcess.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);

CmdProcess.EnableRaisingEvents = true; // 啟用Exited事件

CmdProcess.Exited += new EventHandler(CmdProcess_Exited); // 註冊進程結束事件

CmdProcess.Start();

CmdProcess.BeginOutputReadLine();

CmdProcess.BeginErrorReadLine();

// 如果打開註釋,則以同步方式執行命令,此例子中用Exited事件異步執行。

// CmdProcess.WaitForExit();

}

private void p_OutputDataReceived(object sender, DataReceivedEventArgs e)

{

if (e.Data != null)

{

// 4. 異步調用,需要invoke

this.Invoke(ReadStdOutput, new object[] { e.Data+"ss"+e.Data.Length});

}

}

private void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)

{

if (e.Data != null)

{

this.Invoke(ReadErrOutput, new object[] { e.Data });

}

}

private void ReadStdOutputAction(string result)

{

this.textBoxShowStdRet.AppendText(result + "\r\n");

}

private void ReadErrOutputAction(string result)

{

this.textBoxShowStdRet.AppendText(result + "\r\n");

}

  • 上一篇:網易163的賬戶顯示已經註冊但是為什麽登陸提示使用者名稱不存在
  • 下一篇:ultraedit如何運行C語言?
  • copyright 2024編程學習大全網