Автор Тема: Эмуляция курсора мыши с зажатым в нем ярлыком для перетаскивания  (Прочитано 268 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 37
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Добрый вечер форумчане.
Помогите советом.

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

Например вот так:
(нажмите для показа/скрытия)

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

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

Русское сообщество AutoIt


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3975
  • Репутация: 1056
    • Награды
  • Версия AutoIt: 3.3.14.0
RipVanWinkel  [?]
Цитировать
нигде не нахожу команд автоматизации этого процесса
Код: AutoIt [Выделить]
Последний параметр - скорость. При установке в 0 будет мгновенно, но некоторые программы могут не успевать реагировать.

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

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

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2807
  • Репутация: 473
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Мгновенное сбрасывание это запуск программы. Зачем придумывать костыли?
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 37

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Но команда MouseClickDrag() - требует координаты x/y начала операции перетаскивания.
Этих начальных координат нет.

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

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


Добавлено: Октябрь 12, 2018, 22:04:43
Цитировать
Зачем придумывать костыли?
Это нужно для открытия файлов - программами, с данными файлами не ассоциироваными, а ассоциированными с другими файлами.
Кроме того это нужно для онлайн-инструментов, где необходимость перетаскивания файлов - стоит сплошь и рядом.

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

« Последнее редактирование: Октябрь 12, 2018, 22:04:44 от RipVanWinkel, Причина: Объединение сообщений »

Русское сообщество AutoIt


Помечен как лучший ответ пользователем RipVanWinkel Отправлен Октябрь 13, 2018, 13:19:51

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3975
  • Репутация: 1056
    • Награды
  • Версия AutoIt: 3.3.14.0
Имитация перетаскивания файла скрипта в окно блокнота
Код: AutoIt [Выделить]
#include "_FileDragDrop.au3" ; https://www.autoitscript.com/forum/topic/122881-files-drag-drop/

$hWnd = WinGetHandle("[class:Notepad]")
$sPath = @ScriptFullPath
_FileDragDrop($hWnd, $sPath)


Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 37

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо.


Добавлено: Октябрь 13, 2018, 08:25:42
InnI , подскажите - а как в этом коде - кинуть файл в геометрический центр окна Notepad  ?

(нажмите для показа/скрытия)
« Последнее редактирование: Октябрь 13, 2018, 08:44:38 от RipVanWinkel »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3975
  • Репутация: 1056
    • Награды
  • Версия AutoIt: 3.3.14.0
RipVanWinkel  [?]
Цитировать
кинуть файл в геометрический центр окна
Код: AutoIt [Выделить]
$aPos = WinGetPos($hWnd)
_FileDragDrop($hWnd, $sPath, $aPos[2] / 2, $aPos[3] / 2)


Оффлайн RipVanWinkel [?]

  • Новичок
  • *
  • Сообщений: 37

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Понял.
Спасибо.

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
5948 Просмотров
Последний ответ Февраль 03, 2010, 14:43:44
от CreatoR
2 Ответов
3281 Просмотров
Последний ответ Март 26, 2012, 14:46:25
от noor
2 Ответов
1495 Просмотров
Последний ответ Июнь 29, 2014, 13:28:22
от InnI
7 Ответов
4612 Просмотров
Последний ответ Октябрь 27, 2014, 04:23:30
от TD
5 Ответов
2443 Просмотров
Последний ответ Январь 16, 2015, 10:05:29
от kossvir
11 Ответов
8802 Просмотров
Последний ответ Сентябрь 01, 2018, 03:20:23
от Kirilopak
1 Ответов
1224 Просмотров
Последний ответ Февраль 07, 2017, 10:30:35
от scanfail
1 Ответов
508 Просмотров
Последний ответ Август 31, 2017, 16:55:21
от InnI
7 Ответов
990 Просмотров
Последний ответ Сентябрь 24, 2017, 13:11:06
от InnI
5 Ответов
606 Просмотров
Последний ответ Декабрь 20, 2017, 21:46:32
от mv6677