gpt4 book ai didi

c# - 如何始终保持窗口可见,但不强制它在顶部

转载 作者:太空狗 更新时间:2023-10-30 01:16:29 25 4
gpt4 key购买 nike

我正在创建一个“桌面小工具”,我已经禁用了手动最小化窗口,但现在还有另一个问题:如果用户按下 Windows+D,例如。

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

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

我找到了一种解决方案,但它似乎不适用于 Windows 10:Keeping window visible through "Show Desktop"/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;
}

请注意,此代码比 Keeping window visible through "Show Desktop"/Win+D 中的代码好一点因为窗口可以被其他窗口溢出(就像任何其他窗口一样)。使用 SetParent 将窗口置于所有其他窗口之下。

关于c# - 如何始终保持窗口可见,但不强制它在顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com