前段时间在一个闲聊群看一群大佬们讨论窗体如何置顶,像桌面日历那样。找到一篇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; } }