C#からアプリケーション(.EXE)を起動しますか?


回答:


167

System.Diagnostics.Process.Start()メソッドを使用します。

使い方はこちらの記事をご覧ください。

Process.Start("notepad", "readme.txt");

string winpath = Environment.GetEnvironmentVariable("windir");
string path = System.IO.Path.GetDirectoryName(
              System.Windows.Forms.Application.ExecutablePath);

Process.Start(winpath + @"\Microsoft.NET\Framework\v1.0.3705\Installutil.exe",
path + "\\MyService.exe");

229

役立つコードのスニペットを次に示します。

using System.Diagnostics;

// Prepare the process to run
ProcessStartInfo start = new ProcessStartInfo();
// Enter in the command line arguments, everything you would enter after the executable name itself
start.Arguments = arguments; 
// Enter the executable to run, including the complete path
start.FileName = ExeName;
// Do you want to show a console window?
start.WindowStyle = ProcessWindowStyle.Hidden;
start.CreateNoWindow = true;
int exitCode;


// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))
{
     proc.WaitForExit();

     // Retrieve the app's exit code
     exitCode = proc.ExitCode;
}

これらのオブジェクトを使ってできることは他にもたくさんあります。ドキュメントProcessStartInfoProcessを読んでください。


7
これは.exes以外のファイルタイプでも機能するように見えることを指摘したかっただけです。開くファイルをポイントするだけで、Windowsが最善を尽くしてファイルを開きます。System.Diagnostics.Process.Start(@ "C:\ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh 2014年

WindowStyle = ProcessWindowStyle.Hiddenは非GUI用です。これを初めて実行したとき、UseShellExecute = falseなしで失敗しましたが、現在は機能しています。何が起こっているのかわからない...
バートン

exeの完全な名前がわからない場合、 "PathTo * .exe"を呼び出します。これは可能ですか?名前の残りの部分に「*」を使用できますか?
vishal 2018年

@vishal、このプロセスは特定の実行可能ファイルを呼び出すためのものです。あなたは確かに使ってみることができますがPathTo*.exe、私はそれが機能するとは思わないでしょう。(a)複数の一致がある場合はどうなりますか?(b)セキュリティが弱いため、Microsoftのコードでこれを許可しないことを望みます。
sfuqua 2018年



14

私のようにSystem.Diagnosticsの使用に問題がある場合は、それがなくても機能する次の簡単なコードを使用してください。

Process notePad = new Process();
notePad.StartInfo.FileName   = "notepad.exe";
notePad.StartInfo.Arguments = "mytextfile.txt";
notePad.Start();

10
これは「System.Diagonosticsなし」ではどうですか?ProcessSystem.Diagnosticsにあります。
ポールシンクレア


2

file.exeを\ bin \ Debugフォルダーに入れて使用するだけです。

Process.Start("File.exe");

3
あなたの答えは以前のすべてのものをどのように改善しますか?
mustaccio

この投稿を見に来る人のほとんどは、通常デバッグフォルダーに配置するファイルのパスについて混乱しました。そのため、私のヒント「File.exe」を使用する場合、この場合はパスが必要ないことを直接理解しています。
アミンモハメド

0

Process.Startを使用して、プロセスを開始します。

using System.Diagnostics;
class Program
{
    static void Main()
    {
    //
    // your code
    //
    Process.Start("C:\\process.exe");
    }
} 

0

これを試して:

Process.Start("Location Of File.exe");

(必ずSystem.Diagnosticsライブラリを使用してください)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.