Google Chrome - как активировать Google Chrome и перейти к конкретной вкладке окна?

В системе Windows, у меня работает Python/QT GUI. Теперь при нажатии кнопки мне нужно активировать свернутый или не свернутый Google Chrome перед моим приложением.

Как активировать Google Chrome, а затем переключиться на очень конкретную вкладку с помощью static title name или же process id titles (используя Python или другой способ)?

(Например активировать вторую вкладку)

Python: (не работает, он работает только для его открытия)

import webbrowser
url = 'http://docs.python.org/'
chrome_path = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe %s'
webbrowser.get(chrome_path).open(url)

Ахк: не удается

#d::
list := Acc_Get("Object", "4.23.1", 0, "ahk_class MozillaWindowClass")
;MsgBox % list.accChildCount-1
for each, tab in Acc_Children(list) {
   MsgBox, % tab.accName(0)
   tab.accDoDefaultAction(0)
}
Return


#c::WinActivate( "Calculator", "calc" )

#NoTrayIcon
#SingleInstance force

WinActivate( TheWindowTitle, TheProgramTitle )
{
    SetTitleMatchMode,2
    DetectHiddenWindows, Off

    IfWinExist, %TheWindowTitle%
    {
        WinGet, winid, ID, %TheWindowTitle%
        DllCall("SwitchToThisWindow", "UInt", winid, "UInt", 1)
    }
    Else
    {
        Run %TheProgramTitle%
    }
    Return
}

ТРЮ ТОО:

If ChromeHasTabNamed( "Activating Chrome Tab" )
    MsgBox, Yes
Return


ChromeHasTabNamed( X ) {
    SetTitleMatchMode, 2
    WinGetTitle, title, - Chrome
    While Not InStr( list, title "`n" ) {
        list .= title "`n"
        ControlSend,, ^{Tab}, - Chrome
        Sleep, 50
        WinGetTitle, title, - Chrome
    }
    Return, InStr( list, X ) ? True : False
}

ПОПРОБУЙТЕ, ЧТОБЫ УМИРАТЬ:

SetTitleMatchMode, 2
WinWaitActive - Google Chrome
ControlFocus, Chrome_RenderWidgetHostHWND1
Loop, 15
{
   WinGetTitle, Title, A  ;get active window title
   if(InStr(Title, "Gmail")>0)
   {
      break ; Terminate the loop
   }
   Send ^{Tab}
   Sleep, 50
}

return

1 ответ

Решение

Работает.

chrome := "- Google Chrome"
found := "false"
tabSearch := "Gmail"
curWinNum := 0
SetTitleMatchMode, 2
WinGet, numOfChrome, Count, %chrome% ; Get the number of chrome windows
WinActivateBottom, %chrome% ; Activate the least recent window
WinWaitActive %chrome% ; Wait until the window is active
ControlFocus, Chrome_RenderWidgetHostHWND1 ; Set the focus to tab control ???
while (curWinNum < numOfChrome and found = "false") { 
    WinGetTitle, firstTabTitle, A ; The initial tab title
    title := firstTabTitle
    Loop {
        if(InStr(title, tabSearch)>0){
            found := "true"
            break
        }
        Send {Ctrl down}{Tab}{Ctrl up}
        Sleep, 50
        WinGetTitle, title, A  ;get active window title
        if(title = firstTabTitle){
            break
        }
    }
    WinActivateBottom, %chrome%
    curWinNum := curWinNum + 1
}

if(found = "false"){
    Run "https://gmail.com"
}    
return
Другие вопросы по тегам