我想列出dumpcap.exe可以捕獲數據的支持接口。在C#中返回空字符串的過程標準輸出
我想要運行的命令是「dumpcap.exe -D」
在我的系統,它提供了輸出爲: -
1. \Device\NPF_{1B627AA8-2A1D-4C90-B560-517CF71B33A5} (Intel(R) 825
Network Connection)
2. \Device\NPF_{7ECC4D31-DF17-49AB-960D-628D0580F3C6} (Microsoft)
我想通過閱讀上面的輸出從WPF C#應用程序運行相同的命令。我有以下代碼這樣做: -
Process proc = new Process();
//set the path to dumpcap.exe (verified by me)
proc.StartInfo.FileName = "..\\..\\..\\..\\..\\Dumpcap\\dumpcap.exe";
StringBuilder dumpcapArgs = new StringBuilder();
dumpcapArgs.Append("-D");
proc.StartInfo.Arguments = dumpcapArgs.ToString();
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
MessageBox.Show(line);
}
當我調試時,執行不會在我的while循環中進行。 StandardOutput已經在流的末尾。深入挖掘StandardOutput基礎類的成員,我看到很多System.NotSupportedExceptions的長度,位置等。
上面的代碼可能有什麼問題?
快速觀察
我試着用下面的代碼另一個樣品C#控制檯應用程序:
Process proc = new Process();
proc.StartInfo.FileName = "C:\\Karan\\Dumpcap\\dumpcap.exe";
proc.StartInfo.Arguments = "-D";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
Console.WriteLine(proc.StandardOutput.ReadToEnd());
proc.WaitForExit();
此打印效果與預期輸出!
但是,如果我嘗試讀取字符串變量中的標準輸出,我會得到一個空字符串。
例如,這將返回我一個空字符串: -
Process proc = new Process();
proc.StartInfo.FileName = "C:\\Karan\\Dumpcap\\dumpcap.exe";
proc.StartInfo.Arguments = "-D";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
String output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
對不起,我錯過了線,而複製從Visual Studio代碼。我的錯。更新。 – Karan