16
使用Process類啓動應用程序後,我想將該窗口置於最上方。目前,我的應用程序是最頂層的窗口,所以當我啓動其他應用程序時,它不會顯示。我想到的一件事是,在啓動流程之前,我可以爲我的應用程序設置最頂層= false,這個問題是我想讓流程在顯示給用戶之前有足夠的時間加載,所以我想當我將其他應用程序切換到最頂層時,可以進行更多的控制。使用窗口句柄製作窗口最頂層
使用Process類啓動應用程序後,我想將該窗口置於最上方。目前,我的應用程序是最頂層的窗口,所以當我啓動其他應用程序時,它不會顯示。我想到的一件事是,在啓動流程之前,我可以爲我的應用程序設置最頂層= false,這個問題是我想讓流程在顯示給用戶之前有足夠的時間加載,所以我想當我將其他應用程序切換到最頂層時,可以進行更多的控制。使用窗口句柄製作窗口最頂層
您需要使用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);
謝謝你提供的,應該做的伎倆! user32在64位系統上也有效嗎? – 2009-10-07 00:12:21
是的。它也可以在64位系統上運行。 – 2009-10-07 00:35:46