C# 你能在最上面的窗口上启动一个进程吗?(csharp wpf)

C# 你能在最上面的窗口上启动一个进程吗?(csharp wpf),c#,c,wpf,topmost,C#,C,Wpf,Topmost,你能在最上面的窗口上启动一个进程吗?(csharp wpf) 我有以下内容,但是在这个窗口之前的当前窗口(一个使用window类且topmest=true的wpf窗口)在进程启动时仍然位于进程顶部 if (System.IO.File.Exists(MY_CALC_PATH)) { System.Diagnostics.Process helpProcess = new System.Diagnostics.Process(); helpProcess.StartInfo.Fil

你能在最上面的窗口上启动一个进程吗?(csharp wpf) 我有以下内容,但是在这个窗口之前的当前窗口(一个使用window类且topmest=true的wpf窗口)在进程启动时仍然位于进程顶部

if (System.IO.File.Exists(MY_CALC_PATH))
{
    System.Diagnostics.Process helpProcess = new System.Diagnostics.Process();
    helpProcess.StartInfo.FileName = "calc.exe";
    helpProcess.Start();
    helpProcess.WaitForInputIdle();
    BringWindowToTop(helpProcess.MainWindowHandle);
    SetWindowPos(helpProcess.MainWindowHandle, myCurrentTopmostWinHnd, 0, 0, 0, 0, SWP_NOSIZE_);
}

您需要通过调用将计算器窗口设置为最顶部窗口的子窗口


然而,这种方法。

?在wpf中,我认为所有最上面的窗口都高于所有非最上面的窗口,“活动”最上面的窗口高于所有其他最上面的窗口,如果这有助于消除障碍的话。对于我的问题,我想知道如何将启动的进程标记为最顶层。这是一个好主意,但在我的情况下,它将不起作用,因为子窗口在父窗口的约束边界内打开,因此太小。将此答案标记为最有用。相反,我使用了一种变通方法(将其他窗口设置为同一级别,而不是将其中任何一个窗口设置为最顶层,然后将需要查看的窗口设置为活动窗口)。