我能够成功地传递参数到控制台应用程序使用以下内容:
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);
但是,一旦进入控制台应用程序,控制台应用程序只需要将参数作为由空格分隔的单个string(请参见下文):
static void Main(string[] args)
我的问题是,我将一个主题行和电子邮件正文传递给控制台应用程序,但它只是拾取参数中的第一个单词。 所以,如果我传入这样的东西(注意“testing主题行”应该是一个参数,“testing主体行”将是另一个参数)总共5个参数:
SendplainEmail 25498 test@test.comtesting主题行testing身体线
使CreateProcessinheritance调用进程的控制台
SetConsoleMode()和ENABLE_VIRTUAL_TERMINAL_PROCESSING?
C ++:一个徘徊的'幽灵'窗口出现..?
如何在Windows下的cmd窗口中显示日语汉字?
如何在Windows本机C ++控制台应用程序中覆盖控制台的相同部分,而不使用第三方库?
但是,控制台应用程序会parsing它有9个参数(每个单词一个):
SendplainEmail 25498 test@test.comtesting主题行testing身体线
有没有一种方法可以将parameter passing到控制台应用程序,只有5个参数,主体和主体被视为单个参数?
所以,正如您在Process.Start语句之前所看到的,psi.arguments属性中包含的内容。
数据正确传递,只是接收控制台应用程序只能接收由空格分隔的string数组。 因此,控制台应用程序不是分别以“testing主题行”和“testing主体行”作为第四个和第五个参数,如下所示:
参数[3] =testing
args [4] =主题
args [5] =行
参数[6] =testing
args [7] =身体
args [8] =行
所以,代替这个,我怎样才能把“testing主题行”和“testing主体行”分别作为一个项目在数组中?
Linux – 放弃键盘input
如何通过命令行来填充gui应用程序中的文本框?
如何在系统调用中打印到控制台(terminal)
了解Python中的编码和解码
如何使用Linux控制台search图像的子图像?
你需要用引号( " )来包围参数,所以就像
SendplainEmail 25498 test@test.com "test subject line" "test body line"
否则它不知道你的主题结束和你的身体开始。 ;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。