Перетащите с помощью SendMessage - PullRequest
7 голосов
/ 15 января 2010

Звучит смешно ... просто небольшой эксперимент.
я хотел имитировать перетаскивание файла в приложении / окне, используя отправку сообщения. Возможно ли это?

У меня нет кода для приложения, кроме исполняемого файла.

Приложение IP Messenger .

Я хотел использовать функцию «Отправить» для отправки файла в .exe, что будет
найдите окно IPMessenger и смоделируйте код перетаскивания через код.

Пользователь выберет файл и щелкнет правой кнопкой мыши «отправить в .exe», что приведет к перетаскиванию из кода.

** Примечание: IP Messenger поддерживает операцию перетаскивания для файлов

ТНХ
amit

1 Ответ

4 голосов
/ 15 марта 2010

Есть WM_DROPFILES Сообщение . Я думаю, что вы могли бы использовать CreateToolhelp32Snapshot, чтобы найти окно, которое является IP Messenger, а затем построить структуру DROPFILES для отправки с сообщением WM_DROPFILES.

Последняя ссылка будет на Codeproject с некоторой помощью при создании структуры DROPFILES: Как реализовать перетаскивание между вашей программой и проводником .

<ч />

Вместо использования CreatToolhelp32Snapshot вы можете использовать функцию FindWindow. Здесь вы получите HWND для IP Messenger напрямую, а не CTh32S, который только найдет HANDLE для процесса.

Когда это будет сделано, вы создадите структуру DROPFILES. Прочитайте комментарии по ссылке CodeProject в разделе «Инициирование перетаскивания» для получения дополнительной информации о том, как это сделать.

И наконец вы отправляете его с sendmessage

SendMessage(ipMessHWND, WM_DROPFILES, (HDROP)&myDropFiles, 0);
...