在使用Process.Start 調用外部程序時,除了程序的地址以外,是能夠傳遞參數的,Process.Start 也有多個重載;數組
1 // 2 // 摘要: 3 // 啓動由包含進程啓動信息(例如,要啓動的進程的文件名)的參數指定的進程資源,並將該資源與新的 System.Diagnostics.Process 4 // 組件關聯。 5 // 6 // 參數: 7 // startInfo: 8 // System.Diagnostics.ProcessStartInfo,包含用於啓動進程的信息(包括文件名和任何命令行參數)。 9 // 10 // 返回結果: 11 // 與進程資源關聯的新的 System.Diagnostics.Process 組件,或者若是沒有啓動進程資源(例如,若是重用了現有進程),則爲 null。 12 // 13 // 異常: 14 // System.InvalidOperationException: 15 // 在 startInfo 參數的 System.Diagnostics.ProcessStartInfo.FileName 屬性中未指定任何文件名。- 16 // 或 - startInfo 參數的 System.Diagnostics.ProcessStartInfo.UseShellExecute 屬性爲 17 // true,而 System.Diagnostics.ProcessStartInfo.RedirectStandardInput、System.Diagnostics.ProcessStartInfo.RedirectStandardOutput 18 // 或 System.Diagnostics.ProcessStartInfo.RedirectStandardError 屬性也爲 true。- 或 19 // -startInfo 參數的 System.Diagnostics.ProcessStartInfo.UseShellExecute 屬性爲 true,而 20 // System.Diagnostics.ProcessStartInfo.UserName 屬性不爲 null 或空,或者 System.Diagnostics.ProcessStartInfo.Password 21 // 屬性不爲 null。 22 // 23 // System.ArgumentNullException: 24 // startInfo 參數爲 null。 25 // 26 // System.ComponentModel.Win32Exception: 27 // 打開關聯的文件時發生了錯誤。 28 // 29 // System.ObjectDisposedException: 30 // 該進程對象已被釋放。 31 public static Process Start(ProcessStartInfo startInfo); 32 // 33 // 摘要: 34 // 經過指定文檔或應用程序文件的名稱來啓動進程資源,並將資源與新的 System.Diagnostics.Process 組件關聯。 35 // 36 // 參數: 37 // fileName: 38 // 要在進程中運行的文檔或應用程序文件的名稱。 39 // 40 // 返回結果: 41 // 與進程資源關聯的新的 System.Diagnostics.Process 組件,或者若是沒有啓動進程資源(例如,若是重用了現有進程),則爲 null。 42 // 43 // 異常: 44 // System.ComponentModel.Win32Exception: 45 // 打開關聯的文件時發生了錯誤。 46 // 47 // System.ObjectDisposedException: 48 // 該進程對象已被釋放。 49 // 50 // System.IO.FileNotFoundException: 51 // PATH 環境變量有包含引號的字符串。 52 public static Process Start(string fileName); 53 // 54 // 摘要: 55 // 經過指定應用程序的名稱和一組命令行參數來啓動一個進程資源,並將該資源與新的 System.Diagnostics.Process 組件相關聯。 56 // 57 // 參數: 58 // fileName: 59 // 要在該進程中運行的應用程序文件的名稱。 60 // 61 // arguments: 62 // 啓動該進程時傳遞的命令行參數。 63 // 64 // 返回結果: 65 // 與該進程關聯的新的 System.Diagnostics.Process 組件,或者若是沒有啓動進程資源(例如,若是重用了現有進程),則爲 null。 66 // 67 // 異常: 68 // System.InvalidOperationException: 69 // fileName 或 arguments 參數爲 null。 70 // 71 // System.ComponentModel.Win32Exception: 72 // 打開關聯的文件時發生了錯誤。 73 // 74 // System.ObjectDisposedException: 75 // 該進程對象已被釋放。 76 // 77 // System.IO.FileNotFoundException: 78 // PATH 環境變量有包含引號的字符串。 79 public static Process Start(string fileName, string arguments); 80 // 81 // 摘要: 82 // 經過指定應用程序的名稱、用戶名、密碼和域來啓動一個進程資源,並將該資源與新的 System.Diagnostics.Process 組件關聯起來。 83 // 84 // 參數: 85 // fileName: 86 // 要在該進程中運行的應用程序文件的名稱。 87 // 88 // userName: 89 // 啓動進程時使用的用戶名。 90 // 91 // password: 92 // 一個 System.Security.SecureString,它包含啓動進程時要使用的密碼。 93 // 94 // domain: 95 // 啓動進程時要使用的域。 96 // 97 // 返回結果: 98 // 與進程資源關聯的新的 System.Diagnostics.Process 組件,或者若是沒有啓動進程資源(例如,若是重用了現有進程),則爲 null。 99 // 100 // 異常: 101 // System.InvalidOperationException: 102 // 未指定文件名。 103 // 104 // System.ComponentModel.Win32Exception: 105 // fileName 不是可執行 (.exe) 文件。 106 // 107 // System.ComponentModel.Win32Exception: 108 // 打開關聯的文件時發生了錯誤。 109 // 110 // System.ObjectDisposedException: 111 // 該進程對象已被釋放。 112 public static Process Start(string fileName, string userName, SecureString password, string domain); 113 // 114 // 摘要: 115 // 經過指定應用程序的名稱、一組命令行參數、用戶名、密碼和域來啓動一個進程資源,並將該資源與新的 System.Diagnostics.Process 116 // 組件關聯起來。 117 // 118 // 參數: 119 // fileName: 120 // 要在該進程中運行的應用程序文件的名稱。 121 // 122 // arguments: 123 // 啓動該進程時傳遞的命令行參數。 124 // 125 // userName: 126 // 啓動進程時要使用的用戶名。 127 // 128 // password: 129 // 一個 System.Security.SecureString,它包含啓動進程時要使用的密碼。 130 // 131 // domain: 132 // 啓動進程時要使用的域。 133 // 134 // 返回結果: 135 // 與進程資源關聯的新的 System.Diagnostics.Process 組件,或者若是沒有啓動進程資源(例如,若是重用了現有進程),則爲 null。 136 // 137 // 異常: 138 // System.InvalidOperationException: 139 // 未指定文件名。 140 // 141 // System.ComponentModel.Win32Exception: 142 // fileName 不是可執行 (.exe) 文件。 143 // 144 // System.ComponentModel.Win32Exception: 145 // 打開關聯的文件時發生了錯誤。 146 // 147 // System.ObjectDisposedException: 148 // 該進程對象已被釋放。 149 public static Process Start(string fileName, string arguments, string userName, SecureString password, string domain);
其中的arguments 參數, 是有個空格的問題的, 在外部程序接收參數的 (Winform) 是用過Main(string[] args) 。 其中args是數組 , 在StartInfo.Arguments中的參數的間隔是根據空格進行分斷的。 因此若是在傳遞的參數中是空格的,就須要 在 參數先後追加 「\"」 即:dom
1 string argument1 = "\"" + argv1 + "\""; 2 string argument2 = "\"" + argv2 + "\""; 3 Process process = new Process(); 4 process.StartInfo.FileName = System.Environment.CurrentDirectory + "//test.exe"; 5 process.StartInfo.Arguments = argument1 + " " + argument2; 6 process.StartInfo.UseShellExecute = true; ; 7 //啓動 8 process.Start();
ok, 這樣就能解決Process 傳遞參數的有空格的問題了。ide