Meluncurkan aplikasi (.EXE) dari C #?


Jawaban:


168

Gunakan System.Diagnostics.Process.Start()metode.

Lihat artikel ini tentang cara menggunakannya.

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");

230

Berikut cuplikan kode bermanfaat:

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;
}

Ada banyak lagi yang dapat Anda lakukan dengan objek-objek ini, Anda harus membaca dokumentasi: ProcessStartInfo , Process .


7
Hanya ingin menunjukkan bahwa ini tampaknya juga berfungsi dengan tipe file lain selain .exes. Cukup arahkan ke file yang ingin Anda buka dan Windows akan melakukan yang terbaik untuk membukanya: System.Diagnostics.Process.Start (@ "C: \ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh

WindowStyle = ProcessWindowStyle.Hidden adalah untuk non-GUI. Pertama kali saya menjalankan ini gagal tanpa UseShellExecute = false, tetapi berfungsi sekarang. Tidak yakin apa yang terjadi di sana ...
Barton

Bagaimana jika saya tidak tahu nama lengkap dari exe, saya ingin memanggil "PathTo * .exe" Apakah ini mungkin? Bisakah saya menggunakan "*" untuk sisa nama?
vishal

@vishal, proses ini untuk memanggil executable tertentu. Anda tentu dapat mencoba menggunakan PathTo*.exetetapi saya tidak berharap itu berfungsi. (a) bagaimana jika ada beberapa kecocokan? (B) Saya berharap kode Microsoft tidak akan mengizinkan ini, karena akan keamanan yang lemah.
sfuqua

58
System.Diagnostics.Process.Start("PathToExe.exe");

Bagaimana jika saya tidak tahu nama lengkap dari exe, saya ingin memanggil "PathTo * .exe" Apakah ini mungkin?
vishal

@vishal Anda perlu kode prosedur pencarian untuk menemukan executable
KADEM Mohammed

19
System.Diagnostics.Process.Start( @"C:\Windows\System32\Notepad.exe" );

14

Jika Anda memiliki masalah dalam menggunakan System.Diagnostics seperti yang saya miliki, gunakan kode sederhana berikut yang akan berfungsi tanpanya:

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

10
Bagaimana ini "tanpa System.Diagonostics"? Processada di System.Diagnostics.
Paul Sinclair


2

Cukup masukkan file.exe Anda di folder \ bin \ Debug dan gunakan:

Process.Start("File.exe");

3
Bagaimana jawaban Anda meningkat pada semua yang sebelumnya?
mustaccio

Sebagian besar orang yang datang untuk melihat posting ini bingung tentang jalur file yang biasanya mereka taruh di folder debug sehingga ketika mereka menggunakan petunjuk saya "File.exe" secara langsung mengerti tidak perlu jalan dalam hal ini.
Amin Mohamed

0

Gunakan Process.Start untuk memulai proses.

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

0

Coba ini:

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

(Pastikan Anda menggunakan pustaka System.Diagnostics)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.