谷歌浏览器 - 如何激活谷歌浏览器并切换到特定的选项卡窗口?

谷歌浏览器 - 如何激活谷歌浏览器并切换到特定的选项卡窗口?

问题描述:

在Windows系统上,我运行了Python/QT GUI。现在按下按钮,我需要在我的应用程序前激活最小化或不最小化的Google Chrome。谷歌浏览器 - 如何激活谷歌浏览器并切换到特定的选项卡窗口?

如何激活谷歌浏览器,然后切换到一个非常具体的选项卡static title nameprocess id titles(使用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 
} 

TRY直到死去:

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

webbrowser并不打算作为像autohotkey这样的产品的等价物。如果您想使用Python来控制鼠标并发送按键,请查找PyWinAuto等产品。 –

作品。

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 
+0

将第一个“break”更改为“return”;如果有更多的窗口处于活动状态,则在循环WinActivateBottom被调用后即使已经找到该选项卡,也会导致下一个窗口被激活。 –