Что нового

Эмуляция курсора мыши с зажатым в нем ярлыком для перетаскивания

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Добрый вечер форумчане.
Помогите советом.

При работе за компьютером очень часто приходится перетаскивать мышкой файл и кидать его на окно программы.
Не открывать его программой, а именно перетаскивать.
Однако я нигде не нахожу команд автоматизации этого процесса.
То что я нахожу сводится к тому, чтобы кликать мышкой по заданным координатам.

Например вот так:
Код:
Sleep(5000) ; пауза 5 секунд
MouseMove( 725, 330) ; перемещаем координаты курсора мыши к нашей цели (узнаем их из AutoIt Window Info)
MouseDown("left") ; нажмем ЛКМ
Sleep(5000) ; пауза 5 секунд
MouseDown("left") ; нажмем ЛКМ
MouseMove( 715, 615) ; переместим куда надо
MouseUp("left") ; отпустим ЛКМ

Визуально этот код действует так. Сперва курсор куда-то едет по экрану, хватает там что-то, а потом так же едет в другую координату куда нужно переместить взятое.

Подскажите - как сэмулировать мгновенное сбрасывание (без этих перемещений) курсором мыши некоего ярлыка на конкретное окно ?
Окно программы это Notepad.exe, а файл который нужно на это окно перебросить - D:\1\файл1txt.lnk
Как заставить скрипт - при запуске - тут же сэмулировать курсор мыши с уже зажатым в нем конкретным ярлыком, и уже над окном программы ?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
RipVanWinkel [?]
нигде не нахожу команд автоматизации этого процесса
Код:
MouseClickDrag()
Последний параметр - скорость. При установке в 0 будет мгновенно, но некоторые программы могут не успевать реагировать.

куда-то едет по экрану, хватает там что-то, а потом так же едет
У MouseMove() тоже последний параметр отвечает за скорость. Можно и мгновенно. Посмотрите в справке.

Не открывать его программой, а именно перетаскивать.
Окно программы это Notepad.exe, а файл который нужно на это окно перебросить - D:\1\файл1txt.lnk
Если в блокнот перетащить lnk, то блокнот откроет этот бинарный файл в виде текста. Не пойму, зачем это надо? :scratch:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Мгновенное сбрасывание это запуск программы. Зачем придумывать костыли?
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Но команда MouseClickDrag() - требует координаты x/y начала операции перетаскивания.
Этих начальных координат нет.

Есть только адрес файла который нужно перетащить и конечные координаты.

Я имею ввиду - откуда вообще взяться начальным координатам ?
Тотал командер не открыт, проводник тоже не открыт, на рабочем столе файла нет (и кроме того - рабочий стол загорожен определенной программой).
Но тем не менее - на компьютере-то этот файл присутствует и у него есть конкретный адрес.


Добавлено:
Сообщение автоматически объединено:

Зачем придумывать костыли?
Это нужно для открытия файлов - программами, с данными файлами не ассоциироваными, а ассоциированными с другими файлами.
Кроме того это нужно для онлайн-инструментов, где необходимость перетаскивания файлов - стоит сплошь и рядом.

Мгновенное сбрасывание это запуск программы.
Так как же сделать мгновенное сбрасывание ?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Имитация перетаскивания файла скрипта в окно блокнота
Код:
#include "_FileDragDrop.au3" ; https://www.autoitscript.com/forum/topic/122881-files-drag-drop/

$hWnd = WinGetHandle("[class:Notepad]")
$sPath = @ScriptFullPath
_FileDragDrop($hWnd, $sPath)
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Спасибо.


Добавлено:
Сообщение автоматически объединено:

InnI , подскажите - а как в этом коде - кинуть файл в геометрический центр окна Notepad ?

Код:
#include "_FileDragDrop.au3" ; https://www.autoitscript.com/forum/topic/122881-files-drag-drop/

$hWnd = WinGetHandle("[class:Notepad]")
$sPath = "C:\1\555\1.txt"
_FileDragDrop($hWnd, $sPath)
 
Верх