1

Тема: AHK: Передача движения мыши неактивному окну

Как сделать, чтобы движения мыши передавались неактивному окну? Без активации окна.

2 (изменено: qqlexa, 2018-06-14 01:07:12)

Re: AHK: Передача движения мыши неактивному окну

deepNoise, Ну как я знаю, нужно активировать окно, а потом уже передавать движение мыши.
http://script-coding.com/AutoHotkey/MouseMove.html

3

Re: AHK: Передача движения мыши неактивному окну

Запустить в виртуалке и передавать активному окну.

Мои разработки: Bsod finder, MyTetra Integrator

4

Re: AHK: Передача движения мыши неактивному окну

PostMessage, WM_MOUSEMOVE := 0x200,, x|(y<<16), Control, WinTitle

Для ознакомления:
http://forum.script-coding.com/viewtopic.php?id=7115

5

Re: AHK: Передача движения мыши неактивному окну

PostMessage, WM_MOUSEMOVE := 0x200,, x|(y<<16), ahk_class, ShockwaveFlash

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

6

Re: AHK: Передача движения мыши неактивному окну

Что за название у контрола - ahk_class?
Проверяйте ErrorLevel.

7

Re: AHK: Передача движения мыши неактивному окну

А что такое этот контрол вообще? Сообщение об ошибке не выводилось.
Я делал на манер этого скрипта:

w::
ControlSend,, w, ahk_class ShockwaveFlash
Return

Что такое ErrorLevel и где его можно посмотреть?

8

Re: AHK: Передача движения мыши неактивному окну

В справке.

9

Re: AHK: Передача движения мыши неактивному окну

Прочитал здесь: http://ahk-wiki.ru/postmessage
Контрол - получается, это элемент управления.

WindowsSpy на окне выдаёт это:
Adobe Flash Player 11
ahk_class ShockwaveFlash
ahk_exe MultKritik1.exe
Похоже класс я указал правильно. Но мышь всё равно не работает на закрытой области.

Попробовал DetectHiddenWindows, on, не помогло.

Ещё там написано, что можно определить контрол через идентификатор окна. А как это делается?
Нужно указать имя окна ahk_id %ControlHwnd%, но окно ведь так не определится. И где брать этот идентификатор? В WindowsSpy его вроде нет.
Написано, что нужно определять командой ControlGet Hwnd, но описание этой команды или примеров её использования по поиску в справке я не нашёл.

ErrorLevel я так понял, это переменная, которая выдаёт 1, если случилась ошибка в выполнении скрипта. Только как и куда это значение выводить не понятно.
Да и зачем это нужно, если при активации скрипта при ошибке в коде выдаёт сообщение.

Я в autohotkey новичок, многого не знаю, можно поподробней объяснить?

10

Re: AHK: Передача движения мыши неактивному окну

Вот описание ControlGet. Ну и про другое там переведено (но не вся справка).

11

Re: AHK: Передача движения мыши неактивному окну

Это же описание команды ControlGet. Его я видел. Я думал ControlGet Hwnd это другая команда.
В ControlGet тоже надо указать контрол. А как его указывать мне так и не объяснили.
Попробовал вот так:

ControlGet, HWND,, ShockwaveFlash

PostMessage, WM_MOUSEMOVE := 0x200,, x|(y<<16), ahk_id %HWND%

Пишет, что переменная HWND пустая. Что я делаю не так?

12

Re: AHK: Передача движения мыши неактивному окну

А так?

PostMessage, WM_MOUSEMOVE := 0x200,, x|(y<<16),, ahk_class ShockwaveFlash
msgbox % errorlevel

13

Re: AHK: Передача движения мыши неактивному окну

А так?

Попробовал. Всё так же работает, только на открытой области неактивного окна. Ошибок никаких не выдаёт.
Мне же нужно, чтобы движения мыши передавались неактивному окну, даже если его полностью закрывает активное окно.

14

Re: AHK: Передача движения мыши неактивному окну

В какое приложение отправляете?

15

Re: AHK: Передача движения мыши неактивному окну

Malcev пишет:
PostMessage, WM_MOUSEMOVE := 0x200,, x|(y<<16),, ahk_class ShockwaveFlash

Чтобы послать движение мыши, нужно, во-первых, задать начальные значения координат (считаются от клиентской части окна), во-вторых, динамически менять их в цикле. В-третьих, не факт, что сработает в любом случае, поскольку неизвестно, как окно обрабатывает это сообщение.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16 (изменено: Malcev, 2018-06-15 06:34:23)

Re: AHK: Передача движения мыши неактивному окну

У меня в флешплеере в игре бильярд кий меняет месторасположение без отправления wm_mousemove в цикле, достаточно указать начальные и конечные координаты.

17 (изменено: deepNoise, 2018-06-15 09:35:40)

Re: AHK: Передача движения мыши неактивному окну

В какое приложение отправляете?

Проектор Adobe Flash.

Чтобы послать движение мыши, нужно, во-первых, задать начальные значения координат (считаются от клиентской части окна), во-вторых, динамически менять их в цикле. В-третьих, не факт, что сработает в любом случае, поскольку неизвестно, как окно обрабатывает это сообщение.

Т.е. никак? Или есть способ?

У меня в флешплеере в игре бильярд кий меняет месторасположение без отправления wm_mousemove в цикле, достаточно указать начальные и конечные координаты.

Это в активном или неактивном окне? Неактивное окно закрыто другим окном? Можно поподробней и с примером, пожалуйста?

18

Re: AHK: Передача движения мыши неактивному окну

f11::
PostMessage, WM_MOUSEMOVE := 0x200,, 100|(100<<16),, ahk_class ShockwaveFlash
PostMessage, WM_MOUSEMOVE := 0x200,, 500|(500<<16),, ahk_class ShockwaveFlash

У меня работает в любом положении окна.
http://www8.agame.com/mirror/flash/b/billards.swf

19

Re: AHK: Передача движения мыши неактивному окну

Malcev Как то странно у меня работает этот скрипт: при нажатии F11 курсор встаёт в определённую точку перекрытого неактивного окна.  И это точка не зависит от текущего положения курсора на экране, а курсор во флеше встаёт всегда в одном месте. Кажется это почти то, что нужно.
Наверно нужно сделать, чтобы положение курсора считывалось не при нажатии клавиши, а каждый тик или миллисекунду. И чтобы положение курсора во флешке соответствовала положению курсора на экране.
Подскажите, как это будет выглядеть в скрипте.

20

Re: AHK: Передача движения мыши неактивному окну

Читайте справку о том как определить текущее положение мыши и о том, что такое цикл.

21 (изменено: deepNoise, 2018-06-15 17:54:39)

Re: AHK: Передача движения мыши неактивному окну

Вот скриншот, чтобы было понятней:

https://1.downloader.disk.yandex.ru/disk/714360b125960cb27c038bdd62622cd13b9788e1a378424681a58fe6776c051b/5b23fbac/S8lbVTBEG8nrDXqijJwJm37T-xP3aFY96w_haorqRY1HrqpbobKXcN4FhzZNHic0TySnyD89RyxbsrqB1pGrfQ%3D%3D?uid=37468105&amp;filename=hidenMouse.png&amp;disposition=inline&amp;hash=&amp;limit=0&amp;content_type=image%2Fpng&amp;fsize=237647&amp;hid=8625471d272fcb68fcc971a27e88f5d6&amp;media_type=image&amp;tknv=v2&amp;etag=6f7a65e2003b2aef0e769195fa0425b8

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

22

Re: AHK: Передача движения мыши неактивному окну

Без конкретной флешки сложно что-то сказать.

23

Re: AHK: Передача движения мыши неактивному окну

Вот: https://yadi.sk/d/X2GtnK8A3XwJvd

24

Re: AHK: Передача движения мыши неактивному окну

Я незнакомые флеш-файлы или экзешники не скачиваю и не запускаю.
И другим не рекомендую.

25

Re: AHK: Передача движения мыши неактивному окну

А флеш-файлы чем опасны?

26 (изменено: deepNoise, 2018-06-15 23:26:08)

Re: AHK: Передача движения мыши неактивному окну

Ох какие все привередливые) Сами попросили файл, а теперь думаете кто то вам трояна посылает.
Файл то простейший, можно и самому создать. Просто создайте документ в Adobe Flash со скриптом AS 3.0.
Создай клип с названием cursor в одном слое, а во второй вставьте это:

stage.addChild(cursor);
cursor.mouseEnabled = false;
cursor.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor);

function fl_CustomMouseCursor(event:Event)
{
	cursor.x = stage.mouseX;
	cursor.y = stage.mouseY;
}
Mouse.hide();

И получится этот файл, если мне не верите)

Могу исходник выложить, если экзе вас пугает.

Вот исходник: https://yadi.sk/d/kSpWKj5t3XwRXV

27

Re: AHK: Передача движения мыши неактивному окну

ypppu пишет:

А флеш-файлы чем опасны?

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

28 (изменено: deepNoise, 2018-06-16 02:41:48)

Re: AHK: Передача движения мыши неактивному окну

А как именно он работает? У меня он срабатывает только при нажатии F11, и стрелка встаёт в определённую точку окна флешки .

29

Re: AHK: Передача движения мыши неактивному окну

Да, он именно так и работает.
И мышка переходит в определенную точку независимо от того, перекрыта ли эта точка другим окном.

30

Re: AHK: Передача движения мыши неактивному окну

Malcev, а у Вас в браузере флеш-проигрыватель стало быть отсутствует?

31

Re: AHK: Передача движения мыши неактивному окну

Значит мне нужно просто усовершенствовать этот скрипт? Научиться зацикливать и определять положение мыши? А потом ещё как то передать это положение неактивному окну?
Как же всё сложно для такой простой задачки) Всего то нужно было, чтоб мышь двигалась в неактивном окне.

32

Re: AHK: Передача движения мыши неактивному окну

ypppu пишет:

Malcev, а у Вас в браузере флеш-проигрыватель стало быть отсутствует?

Присутствует.
deepNoise, алгоритм примерно такой: следите за курсором мыши и если он находится не над окном флешплеера передаете его координаты (их нужно будет пересчитывать) флешплееру.
Если вам не хочется в этом копаться, то можно заказать скрипт на платной основе. Например, у teadrinker.

33

Re: AHK: Передача движения мыши неактивному окну

Malcev, если адобе флеш дырявый, почему он у Вас присутствует в браузере? Я что-то не понимаю.

34 (изменено: Malcev, 2018-06-16 17:27:10)

Re: AHK: Передача движения мыши неактивному окну

У меня он отключен в броузере.
А включаю я его только для сайтов которым доверяю.