Перетащите файлы между окнами проводника на Windows 7
Это своего рода сложный запрос, как он выглядит снаружи. Я хотел бы получать уведомления о любой операции перетаскивания, выполняемой в проводнике Windows, с точным количеством файлов, перетаскиваемых из исходной в целевую папку.
Я пытался установить setwindowshookex в своем приложении, но события перетаскивания не отображаются в функции обратного вызова, хотя я получаю изменения размера, forgroundwindows, выбор элементов и т. Д. События.
НЕ уверен, что не так, может показаться невозможным перехватывать события перетаскивания в окнах.
У кого-нибудь может помочь с этим.
Спасибо Ал
1 ответ
Операции перетаскивания внутри Проводника Windows не используют оконные сообщения, они используют IDropSource
а также IDropTarget
COM-интерфейсы через DoDragDrop()
функция. Вы не можете подключить это с SetWindowsHookEx()
, Скорее всего, вам понадобится записать некоторый код в DLL и вставить его непосредственно в Windows Explorer, чтобы он потом мог перехватить DoDragDrop()
напрямую, например, с помощью объезда, поэтому при любом вызове он сначала будет проходить через ваш код хука. Таким образом, вы можете получить доступ к COM-интерфейсам, которые ему передаются, а также определить, было ли перетаскивание успешно или отменено.