我正在创建各种各样的“桌面小工具”,我已禁用手动最小化窗口,但现在还有另一个问题:如果用户按 Windows + D 。
当以这种方式隐藏时,不会触发通常的最小化/调整大小/可见性事件。
我想做一些几乎像TopMost
的事情,但不强迫窗口顺序。
也许可以使用win32 API安装全局快捷方式事件,并简要地将TopMost
设置为true,但这听起来非常糟糕。
我找到了一个解决方案,但它似乎无法在Windows 10上运行:Keeping window visible through "Show Desktop"/Win+D 另一个常见选项是编写一个实际的桌面小工具,在Windows 10上是不可能的,因为它们已被弃用。
是否有其他方法可以随时保持窗口可见(但不在屏幕顶部)?
答案 0 :(得分:4)
此功能对我有用:
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;
}
请注意,此代码比Keeping window visible through "Show Desktop"/Win+D好一点,因为窗口可能会被其他窗口溢出(就像任何其他窗口一样)。在所有其他窗口下使用SetParent窗口。