【发布时间】:2011-04-17 04:56:04
【问题描述】:
我构建了一个 winforms 应用程序,并实现了拖放功能。此功能在 WinXP 或 Win7 中的 Run-As-Administrator 应用程序中运行良好。
从Win7中的非管理员应用程序拖动到我的程序时出现问题,它只是无法正常工作。
我理解这一点是因为操作系统会过滤消息。我在这里找到了解决方案:http://blog.helgeklein.com/2010/03/how-to-enable-drag-and-drop-for.html,但它似乎不起作用。
这里是解决方法代码:
[DllImport("user32.dll", SetLastError = true)]
static extern bool ChangeWindowMessageFilter(uint message, uint dwFlag);
private const uint WM_DROPFILES = 0x233;
private const uint WM_COPYDATA = 0x004A;
private const uint WM_COPYGLOBALDATA = 0x0049;
private const uint MSGFLT_ADD = 1;
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD);
如何让它发挥作用?
【问题讨论】:
标签: c# .net windows-7 drag-and-drop uac