使用Process类启动应用程序后,我想将该窗口置于最顶层。目前,我的应用程序是最顶层的窗口,所以当我启动其他应用程序时,它不会显示。我想到的一件事是,我可以在启动进程之前为我的应用程序设置topmost = false,这个问题是我想让进程有足够的时间加载,然后再显示给用户,所以我想要当我将其他应用程序切换到最顶层时,可以更好地控制。
答案 0 :(得分:54)
您需要使用P/Invoke with SetWindowPos来完成此任务:
[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);
const UInt32 SWP_NOSIZE = 0x0001;
const UInt32 SWP_NOMOVE = 0x0002;
const UInt32 SWP_SHOWWINDOW = 0x0040;
// Call this way:
SetWindowPos(theWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);