Вы хотите создать Shell Drop Handler .Как вы обнаружили, обработчик удаления по умолчанию для файлов .EXE принимает любой файл в качестве элемента, подлежащего удалению, и автоматически запускает приложение с указанием пути к удаленному файлу.Другие элементы, такие как почта или объект календаря, перетаскиваемые напрямую из Outlook, не поддерживаются Windows Explorer напрямую.Один из примеров обработчика перетаскивания, включенного в Windows, - если вы перетаскиваете файл в ZIP-файл, он автоматически добавляет этот файл в ZIP-архив при перетаскивании.
Если вы все еще хотите создать собственное перетаскиваниеобработчик, вы можете выполнить любое настраиваемое действие, когда любой отброшенный элемент будет удален в любом файле (например, значок вашей программы, ярлык и т. д.). Это не тривиальная задача, и написание расширений оболочки из управляемого кода (C # или VB)как правило, не рекомендуется.(См .: http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx)
Как только вы создадите свой обработчик перетаскивания, это будет двухэтапный процесс:
- Во время установки программы создайте файл на рабочем столе с уникальным файломрасширение (например, .myprogdroptarget).
- Зарегистрируйте обработчик перетаскивания для .myprogdroptarget, чтобы этот значок стал «волшебной» целью перетаскивания объектов.
Для некоторого примера кода о том, какчтобы создать обработчик отбрасывания в ATL / C ++, ознакомьтесь с структурой кода Microsoft All-In-One , в частности с классом ATLShellExtDragAndDropHandler.cpp
Альтернативное решение:
Подумайте о создании гаджета для рабочего стола Windows, который выполняет аналогичные функции. Кодирование должно быть проще, поскольку вам не нужно копаться в C ++. Когда-то был гаджет Vista под названием «Волшебная папка», который принимал элементы в качестве целей удаления.Я больше не могу найти его в галерее Windows. Вот статья, в которой описано, как это работает:
http://www.howtogeek.com/howto/windows-vista/keep-your-vista-desktop-clean-with-the-magic-folder/
А вот ссылка на автора (возможно, он поделитсяисходный код, если вы спросите приятно): http://davecra.wordpress.com/