Зарегистрируйте глобальный хук, чтобы определить, нужно ли перетаскивать мышью файлы / текст - PullRequest
2 голосов
/ 05 ноября 2010

Я знаю, что можно зарегистрировать глобальные хуки для движения мыши , нажатия кнопок, прокрутки и т. Д., Но мне было интересно, есть ли способ определить, действительно ли пользователь перетаскивает файл или текст ( некоторый другой контент) с глобальным хуком.

Не могу найти ничего по этому поводу.

Ответы [ 3 ]

3 голосов
/ 06 ноября 2010

Он не обрабатывается сообщениями Windows, хотя для его работы требуется цикл сообщений.Классическое требование COM.Начните читать в RegisterDragDrop (), чтобы увидеть сантехнику.

Примечательно, что UACI-аспект UAC мешает, вы не можете D + D от процесса без повышенных прав до процесса с повышенными правами.ChangeWindowsMessageFilter () - это обычный обходной путь, он не работает для D + D.Не знаю обходной путь.

1 голос
/ 05 ноября 2010

К сожалению, для этого нет крючка.

0 голосов
/ 22 апреля 2011

Скорее всего, вам придется использовать глобальный хук для внедрения DLL в каждый запущенный процесс, тогда эта DLL может вручную перенаправить функции DoDragDrop() и SHDoDragDrop() в таблицу IMPORTS каждого процесса.Когда перенаправленные функции вызываются, вы можете получить DLL, а затем уведомить ваше основное приложение о необходимости.

...