How can I start a process in the background?

2019-01-25 14:43发布

I can't seem to find an answer on Google or here on StackOverflow.

How can I start a process in background (behind the active window)? Like, when the process starts, it will not interrupt the current application the user is using.

The process won't pop out in front of the current application, it will just start.

This is what I'm using:

Process.Start(Chrome.exe);

Chrome pops up in front of my application when it's started. How can I make it start in background?

I've also tried:

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

But there's no difference at all from the previous one.

Thanks.

2条回答
别忘想泡老子
2楼-- · 2019-01-25 14:45

Try this:

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

Also, if that doesn't work, try adding

p.StartInfo.UseShellExecute = false;
查看更多
趁早两清
3楼-- · 2019-01-25 15:03

Below code should do what you need:

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); 
}
查看更多
登录 后发表回答