Что нового

[Автоматизация] поиск окна по handle и нажатие в нем клавиш

Overclocker

Новичок
Сообщения
10
Репутация
0
Версия AutoIt: 3.3.6.1

Описание: Нужен скрипт, при помощи которого бы отлавливалось окно по хэндлу и затем в нем производились программные нажатия кнопок клавиатуры либо мыши, с некоторым интервалом.

Примечания: такой скрипт существует, но он нажимает только одну кнопку клавиатуры - PgDn. Называется Mania Asda Story, приветствуется исходники данной программы либо декомпилятор.
 
Автор
O

Overclocker

Новичок
Сообщения
10
Репутация
0
Напишу последовательность действий.
Программа уже запущена, необходимо:
1) отловить окно программы по ее handle(handle известен);
2) через интервал в 4 секунды нажимать кнопку пробел.
P.S. Если быть точнее скрипт предназначен для автоматизации действий пользователя в игре Фантазиум, в которой стоит GameGuard, писал подобную программу на Delphi, но GG блокирует WinAPI. Не сочтите за читера, но это же никаких нервов не хватит стоять и нажимать кнопку например сутки подряд.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Стандартно будет так, не знаю прокатит или нет
Код:
$hWnd = ...

While WinExists($hWnd)
	Sleep(4000)
	ControlSend($hWnd, '', '', '{Space}')
WEnd



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

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

Overclocker

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

Код:
$hWnd = 0x000703F0

While WinExists($hWnd)
    Sleep(4000)
    ControlSend($hWnd, '', '', '{Space}')
WEnd
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Overclocker [?]
Hwnd меняется при каждом запуске.

Что возвращает такой скрипт:

Код:
MsgBox(64, 'Title', WinExists(0x000703F0))


?
 
Автор
O

Overclocker

Новичок
Сообщения
10
Репутация
0
Тогда как нажимать клавиши с экранной клавиатуры и чтобы они попадали в игру?, по моему GameGuard блокирует и экранную клавиатуру.
Выводит 0, Handle смотрю в AutoIt Window Info
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Overclocker [?]
Тогда как нажимать клавиши с экранной клавиатуры
AutoIt сам умеет отправлять клавиши.

Значит окно не существует. Искать нужно по заголовку или классу.

по моему GameGuard блокирует и экранную клавиатуру
По этому поводу где то была тема...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Overclocker [?]
Как искать по заголовку либо по классу?
Код:
WinGetHandle('[ClASS:Тут Класс;TITLE:Тут заголовок]')

Это есть в справке.
 
Автор
O

Overclocker

Новичок
Сообщения
10
Репутация
0
MsgBox(64, 'Title', WinGetHandle('[CLASS:Фантазиум; TITLE:Фантазиум (RU)]'))
Вот такой код показывает какой хэндл у окна?
При данном коде выходит пустое сообщение.
Как еще поймать адрес окна и нажать в нем кнопку?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Автор
O

Overclocker

Новичок
Сообщения
10
Репутация
0
Вот скрин при наведении цели на Фантазиум.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Overclocker [?]
Первый раз вижу класс окна русскими символами.

А если так:

Код:
$hWnd = WinGetHandle('[REGEXPCLASS:.*Фантазиум.*;REGEXPTITLE:.*Фантазиум.*]')


?
:scratch:
 
Автор
O

Overclocker

Новичок
Сообщения
10
Репутация
0
MsgBox(64, 'Title', WinGetHandle('[REGEXPCLASS:.*Фантазиум.*;REGEXPTITLE:.*Фантазиум.*]'))
В таком случае выводится сообщение с хэндлом.


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

Код:
$hWnd = WinGetHandle('[REGEXPCLASS:.*Фантазиум.*;REGEXPTITLE:.*Фантазиум.*]') 

While WinExists($hWnd)
    Sleep(4000)
    ControlSend($hWnd, '', '', '{Space}')
WEnd
Но нажатие клавиши пробел не происходят.
 
Автор
O

Overclocker

Новичок
Сообщения
10
Репутация
0
axlwor, и? Просто ссылка на игру фантазиум? Как это может помочь в автоматизации процесса нажатия клавиши?
 

axlwor

Скриптер
Сообщения
657
Репутация
147
игрушка защищена ГГ. гугли на тему обхода гг или снятия этого
 
Автор
O

Overclocker

Новичок
Сообщения
10
Репутация
0
Эх. да гуглил уже, безрезультатно.
 

lirikmel

Продвинутый
Сообщения
225
Репутация
84
гугли по Asda story bypass на elitepvpers.de даже найдешь ответ
 
Верх