C / C ++ / C#强制窗口在上面

有没有办法强制另一个窗口在上面? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows,C / C ++ / C#)

您可以使用Win32 API BringWindowToTop 。 这需要一个HWND。

您也可以使用Win32 API SetWindowPos ,它也允许您将窗口设置为顶层窗口。

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

BringWindowToTop将窗口移动到Z顺序的顶部(现在),但不会使其成为最顶层的窗口。

如果要将应用程序窗口从后面(或最小化)放到前面,BringWindowToTop()不起作用。 下面的代码是可靠的:

 ShowWindow(hwnd, SW_MINIMIZE); ShowWindow(hwnd, SW_RESTORE); 
 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 ); }