【问题标题】:C# creating a sticking windows on desktop with transperancyC# 在桌面上创建一个透明的粘贴窗口
【发布时间】:2010-01-09 10:24:09
【问题描述】:

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

我试图让窗口粘在桌面(或别针)上,我可以这样做:

    [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 创建一个漂亮的分层透明窗口,但是这种方法不再适用于将其固定到桌面!

有人知道这是怎么做到的吗?

谢谢!

【问题讨论】:

  • 为什么这种方法“不再起作用”?

标签: c# desktop transparency createwindowex


【解决方案1】:

只有顶层窗口可以被创建为分层的。使用您的方法,您正在为桌面窗口创建一个子窗口,因此它不能分层。

如果您尝试通过将窗口“粘贴”/“固定”到桌面来解释您的意思可能会更好。我假设您想将窗口设置在桌面上的特定位置并始终保持在那里,但是我还缺少更多的东西。否则,为什么不将窗口定位在屏幕上的特定坐标处对您不起作用?

【讨论】:

  • 我想让我的表单“粘贴”到桌面,所以如果我最小化所有内容,它仍然是可见的,它必须是桌面屏幕的一部分,就像小工具侧边栏一样!这适用于已发布的代码,但透明性不会以这种方式工作,所以我正在寻找一种两者兼得的解决方案! :)
猜你喜欢
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
相关资源
最近更新 更多