谷歌浏览器 - 如何激活谷歌浏览器并切换到特定标签窗口?

时间:2017-09-25 13:31:00

标签: python windows google-chrome autohotkey hotkeys

在Windows系统上,我运行了Python / QT GUI。现在按下按钮我需要在我的应用程序前激活最小化或未最小化的谷歌浏览器。

如何激活Google Chrome,然后按static title nameprocess id titles切换到非常具体的TAB(使用Python或其他方式)?

(例如,激活第二个标签) enter image description here

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)

Ahk:失败

#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
}

尝试直到DIE:

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 个答案:

答案 0 :(得分: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