通过“显示桌面”/ Win + D保持窗口可见

时间:2012-04-04 10:50:02

标签: c# windows desktop

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

只是为了澄清 - 我不想要一个TopMost窗口。我不想实际停止“显示桌面”命令,只是忽略它。我想要的只是让我的桌面小工具在桌面上保持可见,破坏了正常的常规功能。

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

2 个答案:

答案 0 :(得分:6)

对于你的问题的答案可能有点迟了,但不过在这里答案似乎已经找到了:

ID | Client_ID | Sale Date |  Total Payment | Paid | Paid Dates

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

答案 1 :(得分:0)

为 WPF 表单添加我的转折点。由于 WPF 窗口句柄,上述代码不起作用。如此完整的代码适用于 WPF(赢得 10):

[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);
    var interop = new WindowInteropHelper(this);
    interop.EnsureHandle();
    interop.Owner = nWinHandle;
}