2012-02-27 6 views
-1

私はProcess.Start()を使用してCL.exeを実行するにはどうすればよいですか?

using (StreamWriter outfile = new StreamWriter(@"f:\trial.cpp")) 
{ 
    outfile.Write(txtCode.InnerText); 
} 

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(@"cl.exe", @" 'trial.cpp'"); 

procStartInfo.RedirectStandardOutput = true; 
procStartInfo.UseShellExecute = false; 
procStartInfo.UserName = "asdasd"; 
SecureString secureString = new SecureString(); 
foreach (char c in "abcded") 
{ 
    secureString.AppendChar(c); 
} 
procStartInfo.Password = secureString; 
// Do not create the black window. 
procStartInfo.CreateNoWindow = true; 
procStartInfo.WorkingDirectory = @"f:\"; 
// Now we create a process, assign its ProcessStartInfo and start it 
System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.StartInfo = procStartInfo; 
proc.Start(); 

// Get the output into a string 
string result = proc.StandardOutput.ReadToEnd(); 

がどのようにパラメータとしてファイル名を渡すために次のコードがありますか?上記のコードは実行されず、すべてのフルパス、異なるパスオプションを試しました。

誰でもお手伝いできますか?

+0

は実行されませんか?エラーは何ですか? – vulkanino

+1

「実行しない」を定義します。何が起こっているのか、何が起こると予想されるのかを正確に説明してください。 – Oded

+0

「実行しない」とはどういう意味ですか?プロセスは開始していませんか?コマンドラインパラメータが間違っていますか? – ken2k

答えて

0

引数が正しく設定されていません。あなたは次のものを持っています:

var procStartInfo = new ProcessStartInfo(@"cl.exe", @" 'trial.cpp'"); 

名前にスペースと一重引用符があります。試してみてください:

var procStartInfo = new ProcessStartInfo(@"cl.exe", @"trial.cpp"); 
+1

既に 'ProcessStartInfo'のコンストラクタで行われています。 – ken2k

+0

@ ken2k - それを逃した - コードを水平方向にスクロールしなかった。 – ChrisF

+0

同じ結果です。ファイルパスに引用符を付けることができ、余分なスペースは、解析の問題ではない引数内の広告スペースにすぎないので、大きな違いはありません。ポストリンクのみの場合は – user1235483

0

EDIT

startInfo.CreateNoWindow = false; 
startInfo.UseShellExecute = false; 
startInfo.FileName = "CL.exe"; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
startInfo.Arguments = "trial.cpp"; 

try 
{ 
    using (Process exeProcess = Process.Start(startInfo)) 
    { 
     exeProcess.WaitForExit(); 
    } 
} 
catch 
{ 
    // error handling 
} 

ここでのポイントは、CLは、コマンドラインの実行可能ファイルではなく、WindowsのGUIアプリケーションであるということです。

http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx

http://msdn.microsoft.com/en-us/library/kezkeayy.aspx

http://msdn.microsoft.com/en-us/library/9s7c9wdw.aspx

+0

-1、要約または解決方法はまったくありません。 – Oded

+0

@Oded私はお詫びしますが、彼はグーグルで簡単に答えを見つけることができます。 – vulkanino

+0

はい。そして、あなたはそのようにコメントすることができました。 – Oded

0

cl.exeのがシステムにない場合PATH(デフォルトではありません)、開始プロセスが見つかりません。実行可能で、実行に失敗します。

したがって、cl.exeがシステムPATHにないことがわかりました。

関連する問題