WinForm 窗体永远置顶,即使Win+D也不影响。

前段时间在一个闲聊群看一群大佬们讨论窗体如何置顶,像桌面日历那样。找到一篇CPP的文章(https://www.cnblogs.com/findumars/p/5786057.html)。

今天有空,翻译了一下C#版本,成功了,所以写下来,以后说不定能用到。

主要方法就一个 CheckParent

其次要注意的是,要设置窗体在任务栏隐藏。

注意好这两点后,就可以开干了。

static IntPtr s_hWndOldParent = IntPtr.Zero;
void CheckParent(IntPtr hWnd)
{
    IntPtr hWndProgram = IntPtr.Zero;
    IntPtr hWndShellDLL = IntPtr.Zero;

    hWndProgram = FindWindow("Progman", "Program Manager");
    if (hWndProgram != IntPtr.Zero)
    {
        hWndShellDLL = FindWindowEx(hWndProgram, IntPtr.Zero, "SHELLDLL_DefView", null);
    }
    if (hWndShellDLL != IntPtr.Zero && s_hWndOldParent != hWndShellDLL)
    {
        SetWindowLong(hWnd, GWL_HWNDPARENT, hWndShellDLL);
        s_hWndOldParent = hWndShellDLL;
    }
}

 

posted @ 2020-12-08 14:56  E024  阅读(826)  评论(0编辑  收藏  举报