2009-10-06 67 views
16

使用Process類啓動應用程序後,我想將該窗口置於最上方。目前,我的應用程序是最頂層的窗口,所以當我啓動其他應用程序時,它不會顯示。我想到的一件事是,在啓動流程之前,我可以爲我的應用程序設置最頂層= false,這個問題是我想讓流程在顯示給用戶之前有足夠的時間加載,所以我想當我將其他應用程序切換到最頂層時,可以進行更多的控制。使用窗口句柄製作窗口最頂層

回答

48

您需要使用P/Invoke with SetWindowPos到accopmlish此:

[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); 
+0

謝謝你提供的,應該做的伎倆! user32在64位系統上也有效嗎? – 2009-10-07 00:12:21

+0

是的。它也可以在64位系統上運行。 – 2009-10-07 00:35:46