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.