1 (изменено: Unit, 2010-12-28 09:38:37)

Тема: AHK: Клики в неактивное окно, в чем ошибка ?

Суть в том что надо в игре кликнуть в неактивное окно, предварительно нажав клавишу Q.
Я слышал что не во всех играх работает афк и прочие прочие, всё же пробую, прошу у вас помощи в том что бы направить меня в правильное русло. Всё же написать 100% рабочий ахк скрипт, и быть уверенным что он пытается сделать то что мне нужно, что бы наверняка убедится что он работает или НЕ работает(ахк в моей игре)


scХХХХ::                                                            ;Клавиша запуска(с активного окна)
WinGet, L, list, НАЗВАНИЕ ОКНА ИГРЫ.                          ; Оприделение ПИДа окна
WinGet, ro_id, PID, ahk_id %L2%                                  ; Обращение к второму(не активному окну) используя второй по счету поименованный пид
ControlSend, ,{sc010}, ahk_pid %ro_id%                      ;Нажимаю Q
sleep, 1000                                                                  ;1 sek
ControlClick, x100 y160, ahk_pid %ro_id%,,LEFT,1,        ;Клик левой клавишой мыши в координату 100 160
return

Так же пробывал:
Определить координату в окне, присвоив к переменным х и у значения координаты в которой стояла мыша в данное время

scXXXXXXX::
MouseGetPos, x, y
return

scХХХХ::                                                            ;Клавиша запуска(с активного окна)
WinGet, L, list, НАЗВАНИЕ ОКНА ИГРЫ.                          ; Оприделение ПИДа окна
WinGet, ro_id, PID, ahk_id %L2%                                  ; Обращение к второму(не активному окну) используя второй по счету поименованный пид
ControlSend, ,{sc010}, ahk_pid %ro_id%                      ;Нажимаю Q
sleep, 1000                                                                  ;1 sek
ControlClick, x y, ahk_pid %ro_id%,,LEFT,1,        ;Клик левой клавишой мыши в координату х у
return

Что из всего вышло:
Открываю второе окно, действительно клавиша Q нажалась, а курсор из любой позиции перемещается в центр экрана на персонажа этого неактивного окна.
А целью было нажать Q+клик(x,y) в неактивном окне

2

Re: AHK: Клики в неактивное окно, в чем ошибка ?

Unit пишет:
WinGet, ro_id, PID, ahk_id %L2%                                  ; Обращение к второму(не активному окну) используя второй по счету поименованный пид

А как Вы определили, что нужное окно именно второе? Вы это проверили?
И если у Вас есть ID окна, зачем Вам PID? Кликайте по ID окна.


Указывать координаты нужно так:

ControlClick, X%x% Y%y%, ahk_pid %ro_id%,,LEFT,1        ;Клик левой клавишой мыши в координату х у

3

Re: AHK: Клики в неактивное окно, в чем ошибка ?

YMP пишет:
Unit пишет:
WinGet, ro_id, PID, ahk_id %L2%                                  ; Обращение к второму(не активному окну) используя второй по счету поименованный пид

А как Вы определили, что нужное окно именно второе? Вы это проверили?

Да, я же писал что клавиша Q там нажимается без всяких проблем а мыш не перемещается по координатам и не кликает


YMP пишет:

И если у Вас есть ID окна, зачем Вам PID? Кликайте по ID окна.
Указывать координаты нужно так:

ControlClick, X%x% Y%y%, ahk_pid %ro_id%,,LEFT,1        ;Клик левой клавишой мыши в координату х у

вставил вашу строчку вместо своей,  что то не получается ....

Хотелось бы обратить внимание на то что открыто 2-5 окон с игрой, все они запущины с одной папки и с одного ярлыка и имеют одно и то же название и именно по этому нам надо определить именно то оно которое второе,третье.... но нам надо оно 2, поэтому там код выглядит так:

sc02F:: ;Жмем на v определяем координаты в которую нужен клик
MouseGetPos, x, y
return

sc029:: ;Жмем на клавишу консоли
WinGet, L, list, Название окна игры 
WinGet, ro_id, PID, ahk_id %L2%
ControlSend, ,{sc010}, ahk_pid %ro_id% ;нажатие Q срабатывает без проблем
sleep, 1000
ControlClick, X%x% Y%y%, ahk_pid %L2%,,LEFT,1     ; При посищении окна вижу что мыша находится в центре экрана на персонаже а не там где указанно координатой и клик не произведен
return

4

Re: AHK: Клики в неактивное окно, в чем ошибка ?

Unit пишет:

вставил вашу строчку вместо своей,  что то не получается ....

Ну, гарантий ведь нет, что эти команды везде сработают. Многое от целевого окна зависит.

Unit пишет:

Хотелось бы обратить внимание на то что открыто 2-5 окон с игрой, все они запущины с одной папки и с одного ярлыка и имеют одно и то же название и именно по этому нам надо определить именно то оно которое второе,третье.... но нам надо оно 2, поэтому там код выглядит так:

Я понял, что несколько окон, мне не понятно, зачем Вам PID. ID окна идентифицирует окно однозначно, у каждого окна он уникален. А вот у процесса может быть и несколько окон, так что PID не даёт такой гарантии.

Но это так, к слову. В чём конкретно проблема с Вашей игрой, сказать трудно.

5

Re: AHK: Клики в неактивное окно, в чем ошибка ?

Один мой знакомый, говорит что у него всё работает, но ками он пользуется процедурами - не говрит. Может кто либо, может еще предложить какой нибуть подобный обходной путь ?

п.с. Пробывал как то оч неудобный варинт, добовления альт+таб ) ну выш понимаете как это не удобно.

Unit, Русский язык по Вам плачет.   /ypppu/

6

Re: AHK: Клики в неактивное окно, в чем ошибка ?

Тоже интересует данный вопрос.

Мой вариант не работает.

Ваш тоже.


ControlClick, X%x% Y%y%, ahk_pid %ro_id%,,LEFT,1     

7 (изменено: Странник, 2013-01-13 09:55:09)

Re: AHK: Клики в неактивное окно, в чем ошибка ?

Q::
{
ControlClick, x1834 y192, название окна,,,, Pos
sleep 1000
}
return

Аналогично не работает. Иногда курсор прыгает к боку окна, но также ничего далее не делает. Пробовал сделать так:

Q::
{
SendEvent {Click 1834, 192, 2}    
SendEvent {Click 934, 612, 2}
SendEvent {Click 934, 195, 2}
SendEvent {Click 935, 403, 2}                                                
sleep 1
}
return

Суть этого скрипта была в том, чтобы посылался двойной клик по указанным координатам, а не чтобы курсор бегал от одной координаты к другой.
Моя задумка скрипта в следующем: посылать клик в определенную координату (именно клик, а не движение курсора от одной координаты к другой и затем клик) в неактивные(фоновые) окна, которые заданы расширением 328х207 и с одинаковым названием заголовка. Через ControlClick не работает.
p.s.: решил не дублировать тему так как проблема аналогичная.