Lancer une application (.EXE) à partir de C #?


Réponses:


168

Utilisez la System.Diagnostics.Process.Start()méthode.

Consultez cet article pour savoir comment l'utiliser.

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

Voici un extrait de code 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;
}

Il y a beaucoup plus que vous pouvez faire avec ces objets, vous devriez lire la documentation: ProcessStartInfo , Process .


7
Je voulais juste souligner que cela semble également fonctionner avec d'autres types de fichiers que .exes. Pointez simplement sur le fichier que vous souhaitez ouvrir et Windows fera de son mieux pour l'ouvrir: System.Diagnostics.Process.Start (@ "C: \ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh

WindowStyle = ProcessWindowStyle.Hidden est pour non-GUI. La première fois que j'ai exécuté cela, cela a échoué sans UseShellExecute = false, mais cela fonctionne maintenant. Je ne sais pas ce qui se passe là-bas ...
Barton

Que faire si je ne connais pas le nom complet de l'exe, je veux appeler "PathTo * .exe" Est-ce possible? Puis-je utiliser "*" pour le reste du nom?
vishal

@vishal, ce processus consiste à appeler un exécutable spécifique. Vous pouvez certainement essayer d'utiliser PathTo*.exemais je ne m'attendrais pas à ce que cela fonctionne. (a) et s'il y a plusieurs correspondances? (b) J'espère que le code de Microsoft ne le permettrait pas, car ce serait une sécurité faible.
sfuqua

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

Que faire si je ne connais pas le nom complet de l'exe, je veux appeler "PathTo * .exe" Est-ce possible?
vishal

@vishal vous devez coder une procédure de recherche pour trouver l'exécutable
KADEM Mohammed

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

14

Si vous rencontrez des problèmes lors de l'utilisation de System.Diagnostics comme je l'ai fait, utilisez le code simple suivant qui fonctionnera sans lui:

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

10
Comment est-ce "sans System.Diagonostics"? Processest dans System.Diagnostics.
Paul Sinclair


2

Placez simplement votre file.exe dans le dossier \ bin \ Debug et utilisez:

Process.Start("File.exe");

3
Comment votre réponse s'améliore-t-elle par rapport à toutes les précédentes?
mustaccio

La plupart des gens qui viennent voir ce message se sont trompés sur le chemin d'un fichier qu'ils placent généralement dans le dossier de débogage, alors lorsqu'ils utilisent mon indice "File.exe", ils ne comprennent pas directement le chemin d'accès dans ce cas.
Amin Mohamed le

0

Utilisez Process.Start pour démarrer un processus.

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

0

Essaye ça:

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

(Assurez-vous d'utiliser la bibliothèque System.Diagnostics)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.