C#中新启动进程的窗口显示在我当前打开的窗口后面

时间:2009-11-05 03:44:09

标签: c# .net

我有一些相当简单的代码来使用Process对象打开文件:

        var proc = new Process();
        proc.StartInfo.FileName = attachmentPath;
        proc.StartInfo.UseShellExecute = true;
        proc.Start();

每隔一段时间,从此过程打开的窗口将在我当前打开的所有窗口后面打开。我没有看到为什么会发生这种情况的任何模式或一致性。有没有人知道为什么会这样,或者我如何解决它?谢谢!

1 个答案:

答案 0 :(得分:1)

Windows不鼓励应用程序暂时关注焦点;周围的规则并没有真正记录下来,大概是为了防止应用程序绕过它们。

但是,你可以尝试一下:

    var proc = new Process();
    proc.StartInfo.FileName = attachmentPath;
    proc.StartInfo.UseShellExecute = true;
    proc.Start();

    //Wait for window to spin up
    proc.WaitForInputIdle();
    BringWindowToTop(proc.MainWindowHandle);

使用BringWindowToTop定义p/invoke