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