コンソールアプリケーションに引数を渡す:コンソールアプリケーション内で一度、しかし私は成功し、次の使用して、コンソールアプリケーションに引数を渡すことができています
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つの引数のために、 "test subject line"は1つの引数であり、 "test body line"は別の引数になるはずです)。
SendPlainEmail 25498 [email protected]テスト件名テストボディラインを
しかし、コンソールアプリケーションは、9つの引数(各ワードに対して1つ)を有するようにそれを解析します:
SendPlainEmail 25498 [email protected]被験者ラインテストボディライン
件名と本文が単一のものとして扱われる5つの引数だけで、コンソールアプリケーションにparmsを渡す方法はありますか議論?
このように、Process.Startステートメントの直前には、psi.argumentsプロパティに含まれているものがあります。
データが正しく渡されています。受信コンソールアプリケーションは、スペースで区切られた文字列のみを受け取ることができます。だから、代わりに以下のように4番目と5番目の引数はそれぞれ「テスト件名」および「試験ボディライン」で、コンソールアプリケーションのプロセスその:
引数[3] =試験
引数[4] =主題
引数[5] =行
引数[6] =試験
引数[7] =体
引数[8] =行
これに代えて、「テスト件名」と「テストボディライン」をそれぞれ1つの項目として扱うにはどうすればよいですか?
引数はスペースまたはタブで区切る必要があります。書式文字列のカンマをスペースで置き換えます。 –