我有一个使用Show()方法显示的窗口
_win.Show();
,此窗口的TopMost
是true
在窗口的按钮上单击,开始新的过程,以在相应的查看器中打开文件
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
。
感谢您的帮助。