Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: DmitryG on June 02, 2013, 02:42:15 AM
-
Суть задачи такова: есть 4 одинаковых окна (с одинаковым заголовком). Необходимо в каждом окне нажать lclcik в определенном месте с определенным интервалом времени (допустим 3 секунды).
Проблема: в менеджере окон (в главном меню) все одинаковые окна имеют одинаковый hwnd, но если зайти в редактор сценария и навести курсором на эти же окна, то они будут иметь разные hwnd, причем отличный от того что в менеджере окон.
Так вот, хочется автоматизировать процесс, чтобы в сценарий не приходилось вписывать вручную hwnd каждого окна.
Примерный алгоритм который пришел мне в голову
Сценарий находит окно с заданным заголовком. Получает его hwnd. Привязывается к нему. Кликает в определенное место данного окна. Пауза. Далее находится такое же окно, но чтобы hwnd отличался от предыдущего. И так далее. Количество в цикле 4 (4 окна).
Написать это самому образования не позволяет.
До этого момента сценарий выглядел так, что очень грубо:
hset(2491116,1)
lclick(640,510)
wait(3)
hset(656500,1)
lclick(640,510)
wait(3)
hset(787366,1)
lclick(640,510)
wait(3)
hset(525436,1)
lclick(640,510)
wait(3)
Нашел полезную команду WNDFIND ("title", [begin]). Вписал её в в сценарий так:
hset(WNDFIND ("Заголовок_окна"),1)
lclick(640,510)
wait(3)
Выходит то, что я описал в самом начале. Берется неверный hwnd из менеджера окон, но в самом окне ничего не происходит.
Помогите советом или делом :) Буду очень благодарен ;D
-
Правильно писать так
hset(WNDFIND ("Заголовок_окна", 1)
lclick(640,510)
wait(3)
1 - необязательный параметр; флаг сообщает о том что строка title может находиться ТОЛЬКО в начале заголовка
Неизвестно одинаковые ли заголовки у твоих окон или разные?!
Есть еще такая функция
HGET (x, y) - числовая функция; возвращает HWND для элемента по заданным координатам
Можно например найти главное окно по заголовку (WNDFIND), включить оконный режим и далее воспользоваться HGET (100, 100) внутри главного окна указать другое внутреннее.
Можно также расставить окна по 4 участкам экрана и получить их HWNDы с помощью HGET
Только это делается один раз при запуске
// поиск окон
$hwnd1 = HGET (100, 100)
$hwnd2 = HGET (800, 100)
$hwnd3 = HGET (100, 800)
$hwnd4 = HGET (800, 800)
// здесь основной скрипт
start:
hset($hwnd1,1)
lclick(640,510)
wait(3)
hset($hwnd2,1)
lclick(640,510)
wait(3)
hset($hwnd3,1)
lclick(640,510)
wait(3)
hset($hwnd4,1)
lclick(640,510)
wait(3)
goto(start)
-
Спасибо! Будем пробовать :)
-
Как то скрипт себя неадекватно ведет. Он привязывается к активному окну и работает уже только для него, игнорируя остальные.
PS. Пытаюсь написать сценарий используя цикл "перебора" hwnd всех окон с заданным заголовком, но пока все тщетно.
-
Как то скрипт себя неадекватно ведет. Он привязывается к активному окну и работает уже только для него, игнорируя остальные.
PS. Пытаюсь написать сценарий используя цикл "перебора" hwnd всех окон с заданным заголовком, но пока все тщетно.
Что значит "неадекватно"... Он и должен так себя вести. В этом и смысл оконного режима.