Avvio di un'applicazione (.EXE) da C #?


Risposte:


168

Usa il System.Diagnostics.Process.Start()metodo

Dai un'occhiata a questo articolo su come usarlo.

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

Ecco uno snippet di codice utile:

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

C'è molto di più che puoi fare con questi oggetti, dovresti leggere la documentazione: ProcessStartInfo , Process .


7
Volevo solo sottolineare che questo sembra funzionare anche con altri tipi di file diversi da .exes. Basta puntare al file che si desidera aprire e Windows farà del suo meglio per aprirlo: System.Diagnostics.Process.Start (@ "C: \ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh,

WindowStyle = ProcessWindowStyle.Hidden è per non GUI. La prima volta che l'ho eseguito è fallito senza UseShellExecute = false, ma ora funziona. Non sono sicuro di quello che sta succedendo lì ...
Barton,

Cosa succede se non conosco il nome completo dell'exe, desidero chiamare "PathTo * .exe" È possibile? Posso usare "*" per il resto del nome?
Vishal

@vishal, questo processo serve per chiamare un eseguibile specifico. Puoi certamente provare a usarlo PathTo*.exema non mi aspetto che funzioni. (a) cosa succede se ci sono più corrispondenze? (b) Spero che il codice di Microsoft non lo consenta, poiché sarebbe una sicurezza debole.
sfuqua,

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

Cosa succede se non conosco il nome completo dell'exe, desidero chiamare "PathTo * .exe" È possibile?
Vishal

@vishal è necessario codificare una procedura di ricerca per trovare l'eseguibile
KADEM Mohammed,

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

14

Se hai problemi con System.Diagnostics come ho fatto io, usa il seguente semplice codice che funzionerà senza di esso:

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

10
Come è "senza System.Diagonostics"? Processè in System.Diagnostics.
Paul Sinclair,


2

Metti il ​​tuo file.exe nella cartella \ bin \ Debug e usa:

Process.Start("File.exe");

3
In che modo la tua risposta migliora su tutte le precedenti?
Mustaccio,

La maggior parte delle persone che vengono a vedere questo post sono confuse sul percorso di un file che di solito inseriscono nella cartella di debug, quindi quando usano il mio suggerimento "File.exe" capiscono direttamente che non è necessario un percorso in questo caso.
Amin Mohamed,

0

Utilizzare Process.Start per avviare un processo.

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

0

Prova questo:

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

(Assicurati di utilizzare la libreria System.Diagnostics)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.