Я ищу документ о том, как подключить функцию IDropTarget :: Drop. Я хотел бы добавить свою dll в целевое приложение в качестве плагина и перехватить функцию IDropTarget :: Drop, чтобы получить отброшенные файлы. Есть ли кто-нибудь, кто уже сделал аналогичную реализацию?Как подключить IDropTarget :: Drop
ответ
Возможно, вам придется взять на себя регистрацию в реестре, чтобы Windows вместо этого активировала ваше приложение. Затем вам нужно будет запустить реальное приложение и вручную подключиться к реальному приложению после того, как оно вызвало CoRegisterClassObject
и переместило его на него. Это не начинающий COM-материал и касается только капель на .exe и запусках его зарегистрированных типов файлов. Чтобы справиться с капельками в окне приложений, вы также должны были ввести .dll в том месте, где вы вызываете CreateProcess на реальном приложении. Вы также должны учитывать тот факт, что приложение может использовать старый WM_DROPFILES
.
Это очень сложно и даже если вы можете заставить все это работать, оно все равно не будет обрабатывать случай, когда пользователь запускает приложение из меню «Пуск», а затем удаляет файлы в окне. Чтобы справиться с этим сценарием, вам также нужно зарегистрировать себя в качестве отладчика для него в ключе Image File Execution Options
, чтобы вы могли ввести вашу .dll.
В этот момент мы далеко в «злую» территорию. Таким образом, недопустимо обходить другие приложения.
Ваш единственный реальный вариант - попросить авторов, если они могут добавить поддержку приложения в приложение.