web-dev-qa-db-fra.com

Comment démarrer un processus en arrière-plan?

Je n'arrive pas à trouver de réponse sur Google ou ici sur StackOverflow.

Comment démarrer un processus en arrière-plan (derrière la fenêtre active)? Par exemple, lorsque le processus démarre, il n'interrompt pas l'application actuelle que l'utilisateur utilise.

Le processus ne sortira pas devant l'application en cours, il commencera juste.

Voici ce que j'utilise:

Process.Start(Chrome.exe);

Chrome apparaît devant mon application lorsqu'elle est lancée. Comment faire démarrer en arrière-plan?

J'ai aussi essayé:

psi = new ProcessStartInfo ("Chrome.exe");
psi.UseShellExecute = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(psi);

Mais il n'y a aucune différence avec le précédent.

Merci.

10
Robert Malansangan

Essaye ça:

 Process p = new Process();
        p.StartInfo = new ProcessStartInfo("Chrome.exe");
        p.StartInfo.WorkingDirectory = @"C:\Program Files\Chrome";
        p.StartInfo.CreateNoWindow = true;
        p.Start();

De plus, si cela ne fonctionne pas, essayez d'ajouter

p.StartInfo.UseShellExecute = false;
25
Tayla Wilson

Le code ci-dessous devrait faire ce dont vous avez besoin:

class Program
{
    static void Main(string[] args)
    {
        var handle = Process.GetCurrentProcess().MainWindowHandle;
        Process.Start("Chrome.exe").WaitForInputIdle();
        SetForegroundWindow(handle.ToInt32());
        Console.ReadLine();
    }

    [DllImport("User32.dll")]
    public static extern Int32 SetForegroundWindow(int hWnd); 
}
4
Vitaliy Tsvayer