Имитация операции перетаскивания с использованием SendInput - PullRequest
0 голосов
/ 06 марта 2011

Можно ли использовать SendInput для имитации операции перетаскивания?

У меня есть приложение, которое принимает файлы определенного формата, которые сбрасываются на него, но не из командной строки, и я хочусвязать это с файлом.Я подумал, что создам небольшой инструмент, который находит окно и имитирует перетаскивание файла - это вообще возможно?Нужно ли использовать SendInput или, возможно, SendMessage?Какими будут параметры?

Ответы [ 2 ]

3 голосов
/ 06 марта 2011

В оболочке уже есть функция, которая имитирует падение: SHDoDragDrop , нет необходимости в хакерских атаках, таких как фальшивый ввод с мыши.

Поскольку вы говорите о командной строке, в XP добавлена ​​поддержка имитации D & D для приложений / зарегистрированных типов файлов: Как мне разрешить открывать файлы через IDropTarget вместо командной строки?

3 голосов
/ 06 марта 2011

Да, вполне вероятно. SendInput внедряет события мыши на очень низком уровне. SendMessage не будет работать.

Вам понадобится поток, поскольку DoDragDrop является блокирующим вызовом. Сначала подделайте мышь, запустите поток, вызовите DoDragDrop. Поток должен спать, чтобы дать достаточно времени для начала работы DoDragDrop, затем имитировать движение мыши и мышь вверх. Держите пальцы скрещенными, чтобы это работало в первый раз, невозможно отладить, если это не так.

...