2009-10-06 8 views
16

Processクラスを使用してアプリケーションを起動した後、そのウィンドウを一番上にしたいと思います。現在、私のアプリは一番上のウィンドウなので、他のアプリを起動すると表示されません。私は、プロセスを起動する前にアプリケーションのtopmost = falseを設定することができたということがあります。この問題は、プロセスをロードしてユーザに表示するまでに十分な時間を与えたいということです。他のアプリケーションを最上位に切り替えるタイミングをより詳細に制御できます。あなたがこのaccopmlishするP/Invoke with SetWindowPosを使用する必要がウィンドウハンドルを使用してウィンドウを一番上にする

答えて

48

:そのため

[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ビットシステムで有効ですか? –

+0

うん。 64ビットシステムでも動作します。 –

関連する問題