web-dev-qa-db-fra.com

Comment démarrer un processus à partir de C #?

Comment démarrer un processus, tel que le lancement d'une URL lorsque l'utilisateur clique sur un bouton?

145
WanKenoobi

Comme suggéré par Matt Hamilton, l’approche rapide dans laquelle vous avez un contrôle limité sur le processus consiste à utiliser la méthode statique Start sur la classe System.Diagnostics.Process ...

using System.Diagnostics;
...
Process.Start("process.exe");

L'alternative consiste à utiliser une instance de la classe Process. Cela permet beaucoup plus de contrôle sur le processus, y compris la planification, le type de la fenêtre dans laquelle elle s'exécutera et, ce qui est le plus utile pour moi, la possibilité d'attendre la fin du processus.

using System.Diagnostics;
...
Process process = new Process();
// Configure the process using the StartInfo properties.
process.StartInfo.FileName = "process.exe";
process.StartInfo.Arguments = "-n";
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
process.WaitForExit();// Waits here for the process to exit.

Cette méthode permet beaucoup plus de contrôle que ce que j'ai mentionné.

207
Andy McCluggage

Vous pouvez utiliser la méthode System.Diagnostics.Process.Start pour démarrer un processus. Vous pouvez même transmettre une URL en tant que chaîne et le navigateur par défaut sera lancé.

23
Matt Hamilton

Comme Matt le dit, utilisez Process.Start .

Vous pouvez transmettre une URL ou un document. Ils seront lancés par l'application enregistrée.

Exemple:

Process.Start("Test.Txt");

Cela va démarrer Notepad.exe avec Text.Txt chargé.

9
GvS

J'ai utilisé ce qui suit dans mon propre programme.

Process.Start("http://www.google.com/etc/etc/test.txt")

C'est un peu basique, mais ça fait le travail pour moi.

8
Blackvault
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
Process.Start(new ProcessStartInfo(path));
6
SimperT

Vous pouvez utiliser cette syntaxe pour exécuter n'importe quelle application:

System.Diagnostics.Process.Start("Example.exe");

Et le même pour une URL. Il suffit d'écrire votre URL entre ce ().

Exemple:

System.Diagnostics.Process.Start("http://www.google.com");
5
alireza amini

Utilisez la classe Process . La documentation MSDN contient un exemple d'utilisation.

5
Franci Penov
class ProcessStart
{
    static void Main(string[] args)
    {
        Process notePad = new Process();

        notePad.StartInfo.FileName   = "notepad.exe";
        notePad.StartInfo.Arguments = "ProcessStart.cs";

        notePad.Start();
    }
}
3
Ravi Kumar G N

Déclarer ceci

[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);

Et mettez ceci dans votre fonction (notez que "checkInstalled" est optionnel, mais si vous l'utilisez, vous devez l'implémenter)

if (ckeckInstalled("example"))
{
    int count = Process.GetProcessesByName("example").Count();
    if (count < 1)
        Process.Start("example.exe");
    else
    {
        var proc = Process.GetProcessesByName("example").FirstOrDefault();
        if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
        {
            SetForegroundWindow(proc.MainWindowHandle);
            ShowWindowAsync(proc.MainWindowHandle, 3);
        }
    }
}

NOTE: Je ne suis pas sûr si cela fonctionne lorsque plusieurs instances du fichier .exe sont en cours d'exécution.

3
Carla Jesus

Incluez le using System.Diagnostics;.

Et puis appelez ceci Process.Start("Paste your URL string here!");

Essayez quelque chose comme ça:

using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;

namespace btnproce
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string t ="Balotelli";
            Process.Start("http://google.com/search?q=" + t);
        }
    }
}

Veuillez noter qu'il s'agit d'un exemple de page ASP.NET. Vous devriez essayer d'improviser un peu.

2
AVIK DUTTA

Pour démarrer Microsoft Word par exemple, utilisez ce code:

private void button1_Click(object sender, EventArgs e)
{
    string ProgramName = "winword.exe";
    Process.Start(ProgramName);
}

Pour plus d'explications, consultez ce lien .

1
user4340666