Author Topic: Сценарий для 4-х одинаковых окон.  (Read 6644 times)

0 Members and 1 Guest are viewing this topic.

DmitryG

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Суть задачи такова: есть 4 одинаковых окна (с одинаковым заголовком). Необходимо в каждом окне нажать lclcik в определенном месте с определенным интервалом времени (допустим 3 секунды).
Проблема: в менеджере окон (в главном меню) все одинаковые окна имеют одинаковый hwnd, но если зайти в редактор сценария и навести курсором на эти же окна, то они будут иметь разные hwnd, причем отличный от того что в менеджере окон.
Так вот, хочется автоматизировать процесс, чтобы в сценарий не приходилось вписывать вручную hwnd каждого окна.

Примерный алгоритм который пришел мне в голову
Сценарий находит окно с заданным заголовком. Получает его hwnd. Привязывается к нему. Кликает в определенное место данного окна. Пауза. Далее находится такое же окно, но чтобы hwnd отличался от предыдущего. И так далее. Количество в цикле 4 (4 окна).

Написать это самому образования не позволяет.

До этого момента сценарий выглядел так, что очень грубо:

Code: [Select]
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]). Вписал её в в сценарий так:

Code: [Select]
hset(WNDFIND ("Заголовок_окна"),1)
lclick(640,510)
wait(3)

Выходит то, что я описал в самом начале. Берется неверный hwnd из менеджера окон, но в самом окне ничего не происходит.

Помогите советом или делом  :) Буду очень благодарен  ;D

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Сценарий для 4-х одинаковых окон.
« Reply #1 on: June 02, 2013, 12:51:39 PM »
Правильно писать так
Code: (clickermann) [Select]
hset(WNDFIND ("Заголовок_окна", 1)
lclick(640,510)
wait(3)

1 - необязательный параметр; флаг сообщает о том что строка title может находиться ТОЛЬКО в начале заголовка
Неизвестно одинаковые ли заголовки у твоих окон или разные?!
Есть еще такая функция
HGET (x, y) - числовая функция; возвращает HWND для элемента по заданным координатам
Можно например найти главное окно по заголовку (WNDFIND), включить оконный режим и далее воспользоваться HGET (100, 100) внутри главного окна указать другое внутреннее.

Можно также расставить окна по 4 участкам экрана и получить их HWNDы с помощью HGET

Только это делается один раз при запуске

Code: (clickermann) [Select]
// поиск окон
$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)
« Last Edit: June 02, 2013, 01:02:38 PM by Oraven »

DmitryG

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Сценарий для 4-х одинаковых окон.
« Reply #2 on: June 02, 2013, 02:19:42 PM »
Спасибо! Будем пробовать  :)

DmitryG

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Сценарий для 4-х одинаковых окон.
« Reply #3 on: June 02, 2013, 03:25:22 PM »
Как то скрипт себя неадекватно ведет. Он привязывается к активному окну и работает уже только для него, игнорируя остальные.

PS. Пытаюсь написать сценарий используя цикл "перебора" hwnd  всех окон с заданным заголовком, но пока все тщетно.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сценарий для 4-х одинаковых окон.
« Reply #4 on: June 02, 2013, 05:31:18 PM »
Как то скрипт себя неадекватно ведет. Он привязывается к активному окну и работает уже только для него, игнорируя остальные.

PS. Пытаюсь написать сценарий используя цикл "перебора" hwnd  всех окон с заданным заголовком, но пока все тщетно.
Что значит "неадекватно"... Он и должен так себя вести. В этом и смысл оконного режима.