Я создал приложение winforms и реализовал функцию перетаскивания &. эта функциональность отлично работает в WinXP или в Win7 от приложений Run-As-Administrator.Включить перетаскивание из браузера в приложение Run-As-Administrator
Проблемы возникают при перетаскивании из приложения, отличного от admin в 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);
Как заставить его работать?
Эпический провал со стороны Microsoft. Им нужно переосмыслить свой дизайн ОС, чтобы старые программы продолжали работать, поскольку они утверждают, что они должны. У меня есть приложение, которое должно получить доступ к файлам в качестве администратора, и использует перетаскивание в качестве основного режима взаимодействия для работы с файлами, и в основном они говорят «слишком плохо, он больше не будет работать», по крайней мере, не с Explorer , Лучшим решением проблемы является, вероятно, удаление Explorer из уравнения с помощью альтернативного браузера файлов, который можно повысить, поскольку неспособность Explorer быть легко поднятой - это то, что мешает дизайну работать. – Triynko