2012-04-27 8 views
0

コンソールアプリケーションに引数を渡す:コンソールアプリケーション内で一度、しかし私は成功し、次の使用して、コンソールアプリケーションに引数を渡すことができています

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つの項目として扱うにはどうすればよいですか?

+1

引数はスペースまたはタブで区切る必要があります。書式文字列のカンマをスペースで置き換えます。 –

答えて

2

あなたが引用符(")でパラメータを囲む必要があり、それは他の

SendPlainEmail 25498 [email protected] "test subject line" "test body line" 

被写体が終了し、あなたの体が始まる場所、それは分からないだろうようなものです。 ;)

関連する問題