1

Тема: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

Нужно держать на десктопе несколько открытых страниц в браузере.
При этом, нужно будет через равные промежутки времени делать WinActivate для этих страниц.
Фактически, нужно постоянное "слайд-шоу" открытых окон для мониторинга.
Пример:


; запускаем первое окно
RunWait, "C:\Program Files\Google\Chrome\Application\chrome.exe" --new-window "ya.ru",,,YID
Send, {F11} ; делаем ему full-screen
; запускаем второе окно
RunWait, "C:\Program Files\Google\Chrome\Application\chrome.exe" --new-window "google.com",,,GooID
Send, {F11}

sleep 1000
; хочу переключиться на первое окно
WinActivate, ahk_pid %YID%
sleep 5000
; и снова на второе
WinActivate, ahk_pid %GooID%

В приведенном примере не работает WinActivate. Есть версия, что я неправильно получаю PID процесса или неправильно использую его в контексте WinActivate.
Проблема в том, что у окон одинаковые Title и class.
Каким способом еще можно идентифицировать окна, чтобы работать с ними?
Может быть, кто-нибудь натолкнет меня на уже готовый скрипт?

2

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

"Window Management" - "WinGet". Ник переводчика: YMP пишет:

WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]

Параметры
ID. Bозвращает уникальный идентификационный номер (HWND/handle) окна.

3

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

Читал данную справку. Не могу понять, как получить IniqueID.
Делал так:


WinGet, IdThisWindow , ID, WinTitle
MsgBox, ID is %IdThisWindow% 

не работает
На месте WinTitle использовал ahk_pid, полученный из:


Run, "C:\Program Files\Google\Chrome\Application\chrome.exe" --new-window "ya.ru",,,PID

Можете показать работающий пример данной конструкции?

4

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

Run, notepad, , , PID
Sleep, 1000
WinGet, OutputVar, ID, ahk_pid %PID%
MsgBox, PID=%PID% `r`n ID=%OutputVar%

5

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

ypppu, громадное спасибо.
Работает!
Пока не разбирался, почему мои строки не работали.
Есть подозрение, что из-за пробелов.

6

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

Оказывается, что Chrome просто не выдает uniqueID ну никак.
Попробовал с IE. Ситуация такова: первое окно IE выдает uniqueID, второе и остальные нет.
Однако, если запускать IE с ключом -noframemerging, то каждой окно выдает uniqueID.
Возможно для Chrome тоже есть ключ, чтобы он запускал окна как-то по особому.
Но пока я этот ключ не нашел. Попозже пошарюсь, может и найду такой.

7

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

В Вашем примере не используется WinGet. Если процесс у обоих окон общий, естественно нельзя переключаться между ними по процессу. Или процессы всё же разные? Покажите код.

8

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

Сорри за долгое молчание.
Вот код.


Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --new-window --extra-chrome-flags "ya.ru", , , PID
Sleep, 1000
WinGet, OutputVar, ID, ahk_pid %PID%
MsgBox, PID=%PID% `r`n ID=%OutputVar%
Note1=%OutputVar%
Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --new-window --enable-strict-site-isolation "google.com", , , PID
Sleep, 1000
WinGet, OutputVar, ID, ahk_pid %PID%
MsgBox, PID=%PID% `r`n ID=%OutputVar%
Note2=%OutputVar%

Loop {
    sleep, 5000
    WinActivate, ahk_id %Note1%
    sleep, 1000
    sleep, 5000
    WinActivate, ahk_id %Note2%
    sleep, 1000
}

Окна хрома открываются в разных окнах.

9

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

Сколько при этом запущено процессов chrome.exe?

10

Re: AHK: Как правильно обращаться к нескольким открытым Chrome страницам?

ypppu пишет:

Сколько при этом запущено процессов chrome.exe?

ниодного. в том то и дело, что пробовал по-всякому.
даже если запускаю просто одно окно хрома + блокнот, все равно не получается с хромом. у блокнота все переменные нормально считываются