2016-05-25 4 views
-2

私のプログラムディレクトリからEXEファイルをフルパスで起動する必要があります。プログラムフォルダ内のC#でexeファイルを実行する

enter image description here

private void programul1ToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    System.Diagnostics.Process.Start(@"C:\Users\radum\Desktop\mapa 3 prog\Prog3\Program 1.exe"); 
} 

私だけ... \ PROG3 \プログラム1.EXEからのパスを与えるために何ができますか?

+0

置き 'プログラム1.exe'次のではない次のソリューションファイルへのプロジェクトのコンパイル済みのバイナリ* *に。 – poke

+0

プログラム1.exeをbinフォルダの隣に移動しましたが、まだ何もありません –

答えて

3

だけrelative pathを使用:

System.Diagnostics.Process.Start(@"Program 1.exe"); 
Program 1.exe

そのコードを実行プログラムと同じディレクトリにcurrent working directoryは、例えばショートカットを使用して変更されなかった場合、上記のコードが動作します。

ていない場合は、あなたが(bin/debug/にする必要があります1)あなたのプログラムへのパスに相対を見つける必要があるでしょう

+0

「未処理の例外、タイプ 'System.ComponentModel.Win32Exception'の例外がSystem.dllで発生しました 追加情報:ファイル指定 " –

+0

この回答では、ファイルが実際に同じディレクトリにあることを確認します。それがコメントでも言えることです。あなたのスクリーンショットから、あなたの親プログラムは 'Program 1.exe'と同じフォルダにありません。 –

+0

Visual Studioからプログラムを実行していますか? VSはデバッグ/リリースフォルダでコンパイルされたexeを実行しているので、作業ディレクトリは "C:¥Users¥radum¥Desktop¥mapa 3 prog¥Prog3¥Topai Catalin 11.6¥Bin¥Debug¥"のようになります。 (プログラム1.exeが必要な場所) – user3057557

0

Common.AssemblyDirectoryは、実行中のアセンブリを含むフォルダを返します。

したがって、以下を使用してください。 Path.Combine(Common.AssemblyDirectory、@ "Prog3 \ Program 1.exe");

EDIT:あなたは私の答えの後に質問を編集しました。ポークが言ったように、あなたは間違ったフォルダにファイルを置く。あなたは

System.Diagnostics.Process.Start(@"..\..\..\Program 1.exe"); 

を使用する必要があります。しかし、あなたがそれを行うべきではありませんので、

0

通常ソリューションディレクトリがデフォルトの出力ディレクトリから3レベルアップしています。あなたは出力ディレクトリにProgram 1.exeをコピーして

System.Diagnostics.Process.Start(@"Program 1.exe"); 

を使用する必要があります。 post build commandsを使用してこの操作を実行できます。 使用このポストビルドコマンドとして

copy "$(SolutionDir)Program 1.exe" "$(OutDir)Program 1.exe" 
関連する問題