Механизм поиска окон при Воспроизведении скрипта

Если окно, в котором требуется совершить определенные действия, сместилось по горизонтали или вертикали по сравнению с положением при Записи, то AutoClickExtreme с учетом смещения окна кликает по новым координатам. Таким образом, не происходит "промазывания" клика мимо кнопки записываемой программы или другого элемента управления по причине изменения положения окна на экране. Кроме того, AutoClickExtreme тщательно контролирует окно, находящееся в фокусе во время Воспроизведения. Как она это делает и какие тонкости, возможно, надо учитывать описывается ниже.
 AutoClickExtreme во время Записи для каждого клика мыши и нажатия клавиатуры "запоминает" окно, которому было адресовано данное действие. Под словами "запоминает окно" имеется ввиду сохранение множества параметров окна: имя программы, которой принадлежит окно, имя заголовка, стиль окна, расширенный стиль окна, размеры окна, координаты левого верхнего угла, восприимчивость к вводу и прочее.

Во время Воспроизведения, чтобы не ошибиться с поиском окна, AutoClickExtreme собирает информацию о всех окнах в системе и проводит среди них конкурс, кто лучше всех подходит на то окно, в котором была Запись: по каждому совпавшему параметру окну присваивается определенное количество баллов. Побеждает в результате окно, набравшее максимальное число баллов. Это окно, если оно свернуто, выводится на передний план и ставится в фокус, т.е. готовность принимать на себя поток ввода с клавиатуры. Такой конкурс проводится НЕ для всех действий, а только для первого в ряду действий, совершенных для определенного окна. Например, как показано на рисунке, в одном блокноте набрали слово, в другом блокноте задали поиск в тексте. Для данной записи будет совершено всего три полных поиска окон: в первом поиске на первом действии будет найдено окно, в котором набрали слово, во втором поиске на 14 действии - окно блокнота, в котором делали поиск, в третьем поиске на 21 действии будет найдено окно, в котором набирается строка поиска текста. Полный поиск окон совершается только при первом действии из ряда действий, совершенных для определенного окна. Поскольку полный поиск окон требует некоторых ресурсов процессора, то при поиске окон заметно притормаживание Воспроизведения и замирание в окне "Останови меня" состояния действия в положении "##".

Такое замирание будет характерно также для поиска окна с определенным заголовком. Заголовку окна уделяется особое внимание и если в системе не найдено окно с точно таким же заголовком, как при Записи, то AutoClickExtreme не будет "спешить" перенаправлять ввод в окно, с похожим заголовком, а подождет несколько секунд (до 5 сек) при первом поиске окно с точным таким же заголовком (распростанена ситуация, когда нужная программа запускается в течении нескольких секунд и поэтому ее ожидание оправдано). Если в течении 5 секунд не найдено окно с точно таким же заголовком, как при Записи, AutoClickExtreme будет искать окно с похожим заголовком и уже в следующем Воспроизведении будет сразу искать окно с частично совпадающим заголовком. Воспроизведение будет проходить быстрее и в свойствах действия AutoClickExtreme сохранит только НЕизменившуюся часть заголовка. Например, в заголовке веб браузера Opera отображается заголовок сайта + "Opera". Поэтому если мы записали вставку в адресную строку нужного нам сайта, то при первом Воспроизведении AutoClickExtreme ищет окно с заголовком "заголовок сайта" + "Opera". Возможно, что при Воспроизведении текущим будет не тот сайт, который был при Записи. И не найдя окно с заголовком того сайта, AutoClickExtreme через 5 секунд найдет окно, которое совпадает частично по заголовку, совпадающей частью будет как минимум слово "Opera". Уже при следующих Воспроизведениях AutoClickExtreme будет сразу искать окно, которое просто содержит слово "Opera". Принцип построения заголовка, приведенный в примере, очень распространен. Т.е. многие программы в заголовке указывают имя программы + дополнительная информация (имя открытого документа, заголовок сайта и прочее). Имя программы может быть либо с правой стороны, либо с левой. Для AutoClickExtreme это не играет решающую роль. Но даже если реализован экзотичный случай, когда заголовки окна полностью не совпадают при Записи и Воспроизведении, то конкурсная основа все равно с большой вероятностью определит правильное окно. К тому же конкурсный принцип поиска дает наиболее правильные результаты для разных окон в одной Записи, но принадлежащих одному и тому же приложению.

Таким образом, для AutoClickExtreme совершенно неважно какое окно на переднем плане - она все равно выведет в фокус "свое" окно, победившее в конкурсе. И даже если фокус по какой-нибудь причине собьется, AutoClickExtreme проверит это и снова выведет в фокус нужное окно. Бывают еще экзотичные случаи, что запущена куча окон с одинаковыми заголовками и действия нужно совершить только в окне, которое находится в фокусе. В этом случае необходимо в AutoClickExtreme отключить контроль окна, снятием соответствующей галочки (см. скриншот ниже). Тогда AutoClickExtreme не будет производить поиск окон вообще, а направлять ввод в то окно, которое на момент Воспроизведения в фокусе. Надежность Воспроизведения частично теряется, поэтому как альтернатива этому методу рекомендуется использовать Пиксельный Контроль, который работает без поиска окон, только с привязкой к картинкам на экране.
Поиск окон при Пиксельном Контроле НЕ производится. Работа ведется только с окнами на экране, а вернее с картинками, находящимися на экране. Поэтому если при обычных действиях (манипуляциях) мышкой, клавиатурой не требуется следить за выводом нужного окна в фокус, так как AutoClickExtreme сама это сделает, то при Пиксельном Контроле следует уделить особое внимание выводу нужного окна в фокус, сделав это двумя способами. Либо перед действием с пиксельным контролем, кликнуть по заголовку нужного окна, тогда при Воспроизведении этого клика AutoClickExtreme будет самостоятельно выводить требуемое окно в фокус. Либо дополнительным действием с пиксельным контролем кликнуть по иконке на панели задач, так как это делает пользователь: он видит иконку на панели задач и кликает по прямоугольнику именно с этой иконкой, независимо от того в какой части панели задач находится прямоугольник нужной программы

У конкурсного поиска окон есть недостаток: если нужное окно не запущено, то AutoClickExtreme не "признается", что не найдено нужное окно, а выдает сообщение "окно невозможно вывести на нужную позицию", так как некоторым окнам по некоторым параметрам AutoClickExtreme начислила немного баллов и поэтому "думает", что главное окно найдено. В дальнейшем предполагается исправить эту нелогичность.

Update:
Начиная с версии 5.70 внешний вид таблицы действий и группировка действий сильно изменилась, но принцип поиска остался прежним, хотя в редких случаях его можно отменить сняв галочку "Контроль окна" в редактировании соответствующего действия. Дополнительную информацию о нововведениях читайте на странице форума.

Читайте также:
Пиксельный Контроль - новые горизонты возможностей AutoClickExtreme
Ветвление Воспроизведения - ключ к достижению цели