如何在任何时候保持窗口可见,但不要强迫它在顶部

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

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

也许可以使用win32 API安装全局快捷方式事件,并简单地将TopMost设置为true,但这听起来非常糟糕。

我找到了一个解决方案,但它似乎无法在Windows 10上运行: 通过“显示桌面”/ Win + D保持窗口可见另一个常见选项,即编写实际的桌面小工具,在Windows 10上是不可能的,给定他们的弃用。

是否有任何其他方法可以在任何时刻保持窗口可见(但不在屏幕顶部)?

这个function对我有用:

 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; } 

注意,这个代码比通过“Show Desktop”/ Win + D可见的保持窗口要好一些,因为窗口可以被其他窗口溢出(就像任何其他窗口一样)。 在所有其他窗口下使用SetParent窗口。