标题很长,但问题很简单。
我试图让一个窗口贴到destop(或pin),我可以这样做:
[DllImport("User32.dll")]
static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll")]
static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
IntPtr pWnd = FindWindow("Progman", null);
pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SHELLDLL_DefVIew", null);
pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SysListView32", null);
IntPtr tWnd = this.Handle;
SetParent(tWnd, pWnd);
这很好,但我不能改变透明或不透明。
我可以使用CreateWindowEx创建一个漂亮的透明窗口,但是这个方法不再用于将其固定到桌面上了!
有人知道如何做到这一点吗?
感谢!
答案 0 :(得分:1)
只能将顶级窗口创建为分层。使用您的方法,您将创建一个到桌面窗口的子窗口,因此它无法分层。
如果你试图通过“粘贴”/“固定”一个窗口到桌面来解释你的意思可能会更好。我假设您想要将窗口设置在桌面上的特定位置并始终保持在那里,但是我必须要有更多的东西,我缺少它。否则,为什么不将窗口定位在屏幕上的特定坐标不适合你呢?