C#在桌面上创建一个具有透明度的粘贴窗口

时间:2010-01-09 10:24:09

标签: c# desktop transparency createwindowex

标题很长,但问题很简单。

我试图让一个窗口贴到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创建一个漂亮的透明窗口,但是这个方法不再用于将其固定到桌面上了!

有人知道如何做到这一点吗?

感谢!

1 个答案:

答案 0 :(得分:1)

只能将顶级窗口创建为分层。使用您的方法,您将创建一个到桌面窗口的子窗口,因此它无法分层。

如果你试图通过“粘贴”/“固定”一个窗口到桌面来解释你的意思可能会更好。我假设您想要将窗口设置在桌面上的特定位置并始终保持在那里,但是我必须要有更多的东西,我缺少它。否则,为什么不将窗口定位在屏幕上的特定坐标不适合你呢?