使过程从最顶部的窗口开始

时间:2019-06-05 14:17:55

标签: c# wpf

我有一个使用Show()方法显示的窗口

 _win.Show();

,此窗口的TopMosttrue

在窗口的按钮上单击,开始新的过程,以在相应的查看器中打开文件

    Process p = new Process();
    p.Exited += new EventHandler(p_Exited);
    p.StartInfo.FileName = @"somepath";
    p.EnableRaisingEvents = true;
    p.Start();

   void p_Exited(object sender, EventArgs e)
   {

   }

在关闭之前,我不希望这个过程成为最高的过程。我尝试过的是

[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
static readonly IntPtr HWND_TOP =new IntPtr(0);
const UInt32 SWP_NOSIZE = 0x0001;
const UInt32 SWP_NOMOVE = 0x0002;
const UInt32 SWP_SHOWWINDOW = 0x0040;

并在p.Start();下将其用作

SetWindowPos(p.MainWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

这似乎对我不起作用,因为_wnd仍然是TopMost。但是,如果我设置

_wnd.TopMost = false;

此过程开始之后(假设为notepad.exe),记事本窗口位于_wnd的后面,但是在单击记事本窗口时,它将显示在前面。但是在这种情况下,我需要监视进程是否结束,然后重置TopMost

感谢您的帮助。

0 个答案:

没有答案
相关问题