防止渲染桌面选择矩形

时间:2018-06-02 14:01:32

标签: c# windows winapi desktop

我正在研究基本上使用OpenGL动画壁纸的小程序。

壁纸全部是交互式的(我使用鼠标事件的全局鼠标钩子),但是当我按住鼠标左键时,我希望选择矩形根本不显示。

我可以更改的是禁用半透明选择矩形,使用注册表项和P / Invoke函数强制桌面重新加载它的注册表设置,从而导致: Wordpress Codex

在图像上,您可以看到选择轮廓,如果在按住并拖动时未渲染,那将非常棒。

是否可以使用C#实现?

修改

@Jonathan Potter提供了这个问题的部分解决方案:

W32.EnumChildWindows(W32.GetDesktopWindow(), (hwnd, param) =>
{
    var WM_CANCELMODE = 0x001F;

    var sb = new StringBuilder(256);
    if (W32.GetClassName(hwnd, sb, 256) > 0)
    {
        if (sb.ToString() == "SysListView32")
            W32.SendMessage(hwnd, WM_CANCELMODE, 0, IntPtr.Zero);
    }
    return true;
}, IntPtr.Zero);

这个解决方案的问题在于,现在每当我尝试在桌面上选择任何东西时,它都不会,因为我就像我开始按住鼠标按钮一样取消选择。

0 个答案:

没有答案