我可以使用下面的顺利传递参数到一个控制台应用程序:将参数传递给控制台应用程序
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Properties.Settings.Default.EmailBlasterAppPath;
string subject = txtSubject.Text.Replace(@"""", @"""""");
string emailbody = txtEmail.Text.Replace(@"""", @"""""");
string args = String.Format("{0},{1},{2},{3},{4}",
"SendPlainEmail",
B2BSession.Doctor.DoctorId.ToString(),
DocEmail.Trim(), subject, emailbody);
psi.Arguments = args;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
Process process = Process.Start(psi);
然而,一旦控制台应用程序中,控制台应用程序只能期望参数分隔单串一个空格(见下图):
static void Main(string[] args)
我的问题是,我传递主题行和邮件正文进入控制台应用程序,但它仅在参数拿起第一个字。所以,如果我传入类似的东西(注意“测试主题行”应该是一个参数,“测试主体行”将是另一个参数),总共5个参数:
SendPlainEmail 25498 [email protected]测试对象线路测试体线
但是,控制台应用程序将解析它为具有9个参数(每个字):
SendPlainEmail 25498 [email protected]测试受试者线路测试体线
有没有办法将参数传递给控制台应用程序,只有5个参数,主题和主体被视为一个参数争论?
因此,正如您可以看到的,就在Process.Start语句之前,psi.arguments属性中包含的内容。
正在正确传递数据,只是接收控制台应用程序只能接收由空格分隔的字符串数组。所以,代替第四和第五参数是“测试受试者行”及“测试体线”,控制台应用程序过程中它如下所示:
ARGS [3] =测试
ARGS [4] =受试者
ARGS [5] =线
ARGS [6] =测试
ARGS [7] =身体
ARGS [8] =线
那么,代替这个,我怎样才能将“测试主题行”和“测试主体行”分别作为数组中的一项呢?
参数必须用空格或制表符分隔。用空格替换格式字符串中的逗号。 – 2012-04-28 16:55:33