Тема: AHK: взаимодействие с Google Chrome
Интересует, нет ли идей по поводу автоматизации задач в Google Chrome? При этом очень бы хотелось избежать Click и прочего управления посредством действий мыши, так уж настаивает мое злосчастное эстетическое чувство
.
В частности, возникли следующие проблемы.
1. Отслеживание окончания загрузки страницы.
Для других браузеров очевидно наиболее удобный способ - ожидание соответствующего сообщения в строке состояния. Но в хроме он не работает ввиду нестандартности строки состояния. Изучение хромовых форумов показало, что тамошняя строка состояния - вещь почти эфемерная и для использования непригодная (или нет?). Посему пришлось использовать косвенные признаки.
WatchCross()
{
loop 600
{
sleep 500
PixelGetColor, MiddleOfCross, 76, 46 ; центр кнопки "обновить" - при загрузке страницы отображается крестик,
PixelGetColor, OutOfCross, 95, 46 ; т.е. пиксел темнее фона, а после окончания - стрелка колечком, т.е.
if (MiddleOfCross = OutOfCross) ; пиксел того же цвета, что и фон
return
}
winclose a
msgbox Превышено время ожидания
exit
}Аналогичным образом можно отслеживать значки на вкладках и значек оконного меню. Метод работает, но все это вторично, а использование PixelGetColor мне активно не нравится. Браузер-то, получается, отслеживает окончание загрузки. Не выдает ли он при этом какой-нибудь, пусть косвенный, но не сугубо графический сигнал? Предположим, если бы пресловутые крестик и стрелка кольцом хранились бы в виде отдельного (-ых) файла (-ов), таким сигналом было бы обращение к ним.
2. Передача фокуса от браузера флеш-игре и обратно.
При запуске флеш-игры (по крайней мере Tanki Online) большинство встроенных горячих клавиш браузера перестают действовать, в т.ч. все передающие фокус. Вроде бы AU3_Spy показывает, что все окно браузера кроме рамки, - один большой контрол (ClassNN: Chrome_RenderWidgetHostHWND1), но передать ему фокус с помощью ControlFocus мне тоже не удалось. Приходится довольствоваться Click, но это очень, очень печалит
.
Для обратной передачи фокуса способ, хоть и не отличающийся изяществом, но клавиатурный и простой, нашелся - двойное нажатие клавиши Win. Впрочем, alt+space тоже работает, так что отдельные действия доступны через меню без передачи фокуса.
3. Распознавание вкладок.
Заголовки неактивных вкладок отображаются как Hidden Window Text текущей, так что кажется нетрудно получить их количество и даже расположение, но последнее - только при условии, что названия вкладок не одинаковы.

