【发布时间】:2022-08-13 22:32:09
【问题描述】:
场景:前台有X的窗口,当你最小化它时,它会将窗口Y带到前台或桌面。
在最小化X 之前,我可以使用什么WINAPI 来获得Y 的HWND?
我试过这个:
HWND hWndnext = GetWindow(hWnd, GW_HWNDNEXT);
但它没有返回我正在寻找的HWND。
我试图在尝试最小化时将我的窗口设置为透明,但不让它被最小化,在它变得透明后,激活/聚焦它真正被最小化的下一个窗口案例,然后再次点击它恢复透明度为默认值。
我的第二次尝试是:
case WM_SYSCOMMAND:
{
if (wParam == SC_MINIMIZE) {
DefWindowProc(hWnd, msg, wParam, lParam);
BYTE alpha = GetWindowAlpha(hWnd) ? 0 : 255;
// Update the window transparency.
DWORD exstyle = GetWindowLongW(hWnd, GWL_EXSTYLE);
SetWindowLongW(hWnd, GWL_EXSTYLE, exstyle | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, 0, alpha, LWA_ALPHA);
// Attempt to restore the window without activating it.
ShowWindow(hWnd, SW_SHOWNOACTIVATE);
return 0;
}
break;
}
但它仍然没有将下一个窗口聚焦到任务栏中。
-
听起来像XY problem。您试图用问题中发布的 Y 解决的实际问题 X 是什么?
-
没有这样的 API。最小化该窗口,然后调用 GetForegroundWindow() 以查看下一步。