2011-07-14 13 views
0

exeファイル(PVFProject15.exe)を実行すると、入力ファイル(inputFile.txt)からデータが読み込まれ、結果が別のファイル(outputFile.txt)に出力されます。 exeファイルは、ダブルクリックするとうまく動作します。出力ファイルが作成されるまで開いたままのコンソールウィンドウを開きます。しかし、C#から(PVFProject15.exe)を実行すると、コンソールウィンドウが開き、非常に短時間で終了し、出力ファイルが決して作成されません。exeファイルをCから実行する際の問題

私は一日中この問題を解決するために取り組んできたので、本当に助けていただきありがとうございました。以下は私のコードです。

private void button1_Click(object sender, EventArgs e) 

{ 
     Process runFortran = new Process(); 
     try 
     { 
      runFortran.StartInfo.FileName = "C:\\temp\\trial\\PVFProject15.exe"; 
      runFortran.Start(); 
      runFortran.WaitForExit(); 
     } 
     catch (Exception exc) 
     { 
      MessageBox.Show(exc.Message); 
     } 
    } 

ありがとうございます。

Safaa

+0

私はメモ帳を使用してコードを試してみた、と他のコンソールアプリケーションの私が作成した、そして、それはそうですうまく動作する。 PVFProject15.exeのコードはありますか? – Mike

+2

StartInfo.WorkingDirectoryを@ "c:\ temp \ trial"に設定していません。よく書かれていないプログラムの多くは、それを生き残ることができません。 –

答えて

0

PVFProject15.exeの場合は、相対パスを使用してファイルに書き込み、あなたがあなたのメインプログラム・ブートストラップを開始したディレクトリにoutputFile.txtを探します。

1

はおそらくPVFProject15.exeは、現在のディレクトリがCに設定する必要があります:\一時\裁判

0

私は私のC#ベースのソフトウェアからいくつかの.exeファイルと.HTAを起動しようとすると、私はまた、同じ問題を満たしています。 私は解決策を探し始め、Mike Mozhaevの答えは私に正しい方向に向かう。 StartInfo.WorkingDirectory = Convert.ToString(System.IO.Directory.GetParent(appPath));

をので、コードのようにする必要が:あなたのコードで あなたが使用する必要が

if (File.Exists(appPath)) 
       { 
        Process runProcess = new Process(); 
        runProcess.StartInfo.WorkingDirectory = Convert.ToString(System.IO.Directory.GetParent(appPath)); 
        runProcess.StartInfo.UseShellExecute= true; 
        runProcess.StartInfo.FileName = appPath; 
        runProcess.Start(); 

       } 
関連する問題