2010-02-21 65 views
0

我想從c#應用程序調用一個從它開始的應用程序的命令行並從中檢索統計信息。從.NET應用程序調用命令行

我這樣做,但缺少的東西:

ProcessStartInfo psf = new ProcessStartInfo("cmd.exe", "/C time"); 
psf.WindowStyle = ProcessWindowStyle.Hidden; 
psf.RedirectStandardOutput = true; 
psf.UseShellExecute = false; 
psf.CreateNoWindow = true; 
Process p = Process.Start(psf); 
StreamReader sr = p.StandardOutput; 
p.WaitForExit(); 

有什麼不對?

+0

'CMD/C Time'希望用戶輸入。除非您提供一些輸入,否則它不會關閉。在你的情況下,你隱藏了命令窗口。這使得它看起來像一個輸入在隱藏窗口中掛起。 你想要代碼做什麼? – shahkalpesh 2010-02-21 08:56:09

+0

我不想改變從這個應用程序獲得它的時間 – 2010-02-21 08:57:01

+1

你不能使用'DateTime.Now'嗎? – shahkalpesh 2010-02-21 08:58:10

回答

2

嘗試傳遞「/ c time/t」而不是「/ c time」。

+0

是的,我收到了數據。做了什麼?我怎樣才能得到毫秒? – 2010-02-21 09:02:35

+0

正如其他人所述,如果沒有/ t,命令要求輸入。但我不認爲「時間」命令支持毫秒。這也已經被陳述過,但爲什麼不簡單地使用DateTime.Now呢? – 2010-02-21 09:05:34

+0

我需要檢查此選項與DateTime對象之間的差異以及另一件事。謝謝 – 2010-02-21 09:06:55

1

要使用DateTime結構得到系統的時間,我會建議你:

string time = DateTime.Now.ToString("hh:mm:ss.fff"); 
Console.WriteLine(time); 
+0

我需要使用shell和時間,而不是datewtime對象 – 2010-02-21 09:05:51