2009-12-09 11 views

答えて

5

Win32 API BringWindowToTopを使用できます。 HWNDが必要です。

また、Win32 API SetWindowPosを使用すると、ウィンドウをトップレベルウィンドウにするようなこともできます。

+0

seccondリンクが間違っている、あなたは意味http://msdn.microsoft.com/en-us/library/ms633545%28VS.85%29.aspx:次のコードは、信頼性の高いこのトリックを行い この機能の例もお勧めしますか? –

+0

@Levo:貼り付ける前に、正しくクリップボードにコピーしてはいけません。 –

10
SetWindowPos(that_window_handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); 

BringWindowToTopは(今のところ)Zオーダーの一番上にウィンドウを移動しますがは最上位のウィンドウことはありませありません。

+0

例を挙げてもらえますか? –

+1

@Levo:上記のスニペットの 'that_window_handle'の代わりに、あなたが一番上にしたいウィンドウのハンドルを置き換えてください。 –

+0

これは受け入れられるべきです。 – Neolisk

3

BringWindowToTop()は、アプリケーションウィンドウを背後(最小化)から前面に移動したい場合には効果がありません。

ShowWindow(hwnd, SW_MINIMIZE); 
ShowWindow(hwnd, SW_RESTORE); 
+0

XP勝利が遅いです。 – ahoo

+0

魅力のように働く! –

0
BOOL CALLBACK EnumWindowsProc(HWND hWnd, long lParam) { 
    wchar_t buff[255]; 

    if (IsWindowVisible(hWnd)) { 
     GetWindowText(hWnd, (LPWSTR) buff, 254); 
     //wprintf(L"%s\n", buff); 
     wstring ws = buff; 
     if (ws.find(L"Firefox") != ws.npos) 
     { 
      ::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); 
     } 
    } 
    return TRUE; 
} 

int main(){ 
    BOOL enumeratingWindowsSucceeded = ::EnumWindows(EnumWindowsProc, NULL); 
} 
関連する問題