我正在通過命令行運行一個exe文件並獲得跟隨輸出。如何讀取進程輸出進程中的進程消息?
C:\ Users \用戶系統管理員> C:\ Users \用戶系統管理員\桌面\ New_folder \設置\ PatchInstaller.exe --mode =無聲
C:\ Users \用戶系統管理員開始設置UI模式:無提示錯誤: 正在運行另一個實例,一次只能運行一個實例。 退出代碼:11
我公司通過System.daignostics.process運行此。
我的問題是PatchInstaller.exe調用另一個進程,並且該嵌套進程的輸出是使用cmd可見的。但相同的結果和退出代碼,我無法通過PatchInstaller.exe的進程對象。 有沒有什麼辦法可以讓程序在進程內運行? 以下是代碼,我累了...
string command = @"C:\Users\sysadmin\Desktop\Setup\PatchInstaller.exe";
string result = string.Empty;
System.Diagnostics.ProcessStartInfo procStartInfo = new ProcessStartInfo();
procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command + " --mode=silent);
System.Diagnostics.Process proc = new Process();
procStartInfo.ErrorDialog = false;
procStartInfo.UseShellExecute = false;
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
if (!string.IsNullOrEmpty(domain) && !string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(pwd))
{
procStartInfo.Domain = domain;
procStartInfo.UserName = user;
System.Security.SecureString ss = new System.Security.SecureString();
foreach (char c in pwd) { ss.AppendChar(c); }
procStartInfo.Password = ss;
}
proc = System.Diagnostics.Process.Start(procStartInfo);
proc.ErrorDataReceived += delegate(object sender, System.Diagnostics.DataReceivedEventArgs errorLine)
{
if (errorLine.Data != null) result += "error:" + errorLine.Data +;
};
proc.OutputDataReceived += delegate(object sender, System.Diagnostics.DataReceivedEventArgs outputLine)
{
if (outputLine.Data != null) result += outputLine.Data +;
};
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
Process[] pname = Process.GetProcessesByName("PatchInstaller");
Process[] processlist = Process.GetProcesses();
foreach (Process theprocess in processlist)
{
Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}
proc.WaitForExit();
PatchInstaller.ex e它將靜默執行,然後它將調用PatchInstaller.exe中的其他進程,並且將獲得C:\ Users \ sysadmin>開始設置 UI模式:無提示 錯誤:正在運行的進程衝突。 退出代碼:19所以我需要閱讀這一行。我在這裏被卡住了。 –
我不明白你說的是什麼。 –
感謝您的回覆。但我不是在尋找你在這裏完成的一樣。當exe直接執行並在命令行下面給出輸出時,這是一個可用的代碼。 這裏我的exe文件正在運行,它將首先執行下面的行, C:\ Users \ sysadmin \ Desktop \ New_folder \ Setup \ PatchInstaller.exe --mode = silent 現在PatchInstaller.exe在內部執行其他進程,我是(EX:C:\ Users \ New_folder \ Setup \ PatchInstaller.exe --mode = silent(回車)C:\ Windows \ system32>開始安裝程序退出代碼:19;(需要讀取這條線。) –