如何始终保持窗口可见,但不强迫它位于顶部



我正在创建一个"桌面小工具",我已经禁用了窗口的手动最小化,但现在还有另一个问题:例如,如果用户按 Windows+D,系统仍然可以隐藏窗口。

以这种方式隐藏时,不会触发通常的最小化/调整大小/可见性事件。我想做一些几乎像TopMost的事情,但不强制窗口顺序。

也许可以使用 win32 API 安装全局快捷方式事件,并简要地将TopMost设置为 true,但这听起来很黑客。

我找到了一个解决方案,但它似乎不适用于 Windows 10:通过"显示桌面"/Win+D 保持窗口可见 另一个常见的选项是编写实际的桌面小工具,鉴于它们的弃用,在 Windows 10 上是不可能的。

有没有其他方法可以始终保持窗口可见(但不在屏幕顶部)?

这个函数对我有用:

BOOL FixShowDesktop(HWND hWnd)
{
    HWND hWndTmp = FindWindowEx(NULL, NULL, L"Progman", NULL);
    if (hWndTmp)
    {
        hWndTmp = FindWindowEx(hWndTmp, NULL, L"SHELLDLL_DefView", NULL);
        if (hWndTmp)
        {
            SetWindowLongPtr(hWnd, -8, (LONG_PTR)hWndTmp);
            return TRUE;
        }
    }
    return FALSE;
}

请注意,此代码比通过"显示桌面"/Win+D 保持窗口可见要好一些,因为窗口可能会被其他窗口(如任何其他窗口)溢出。使用 SetParent 会将窗口置于所有其他窗口下。

最新更新