我正在研究基本上使用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);
这个解决方案的问题在于,现在每当我尝试在桌面上选择任何东西时,它都不会,因为我就像我开始按住鼠标按钮一样取消选择。