gpt4 book ai didi

c# - 通过 "Show Desktop"/Win+D 保持窗口可见

转载 作者:可可西里 更新时间:2023-11-01 13:30:22 25 4
gpt4 key购买 nike

我正在创建一个桌面小工具,但遇到了问题。该窗口将被“显示桌面”命令隐藏 - 停止,我知道你在想什么,不需要“你不应该这样做”的评论 - 我想停止它。毕竟,桌面小工具的全部意义在于它可以固定在桌面上。

澄清一下 - 我不想要 TopMost 窗口。我不想真正停止“显示桌面”命令,只是忽略它。我只想让我的桌面小工具在桌面上保持可见,像往常一样尽可能少地干扰正常功能。

有什么想法吗?我当前的方法是我在 Google 上找到的 P/Invoke 片段,将表单的父级设置为 Progman 或其他。问题是这似乎强制在任务栏中显示窗口,这是我不想要的。

最佳答案

回答你的问题可能有点晚了,但我似乎找到了答案:

    [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hP, IntPtr hC, string sC, string sW);

void MakeWin()
{
IntPtr nWinHandle = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Progman", null);
nWinHandle = FindWindowEx(nWinHandle, IntPtr.Zero, "SHELLDLL_DefView", null);
SetParent(Handle, nWinHandle);
}

“MakeWin”应该在窗体的构造函数中调用,最好在“InitializeComponent”之前调用。至少在 Win7 下对我有用。

关于c# - 通过 "Show Desktop"/Win+D 保持窗口可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009623/

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