Google chrome 无法使用自动热键识别Google Chrome窗口

Google chrome 无法使用自动热键识别Google Chrome窗口,google-chrome,autohotkey,Google Chrome,Autohotkey,我正在尝试使用自动热键来激活最顶端的谷歌浏览器窗口。这是我正在使用的代码: WinActivate, ahk_class Chrome_WidgetWin_1 然而,它似乎没有任何效果 尝试 WinGet nChromeWindows, Count, ahk_class Chrome_WidgetWin_1 使nChromeWindows变量获得大于1的值,即使只有一个chrome窗口打开。这表明上面的WinActivate无法正常工作的原因是,即使只有一个“实际”的Chrome“窗口”,也

我正在尝试使用自动热键来激活最顶端的谷歌浏览器窗口。这是我正在使用的代码:

WinActivate, ahk_class Chrome_WidgetWin_1
然而,它似乎没有任何效果

尝试

WinGet nChromeWindows, Count, ahk_class Chrome_WidgetWin_1
使
nChromeWindows
变量获得大于1的值,即使只有一个chrome窗口打开。这表明上面的WinActivate无法正常工作的原因是,即使只有一个“实际”的Chrome“窗口”,也似乎存在多个Chrome“窗口”

有人能解释一下发生了什么,以及如何识别“真正的”(最上面的)Chrome窗口吗


TIA,Himanshu

谷歌Chrome创建多个子进程,每个进程拥有一个窗口,包括Chrome扩展或选项卡的背景窗口。因此,您需要找出最旧的进程,即所有进程的父进程,并激活最旧进程正在使用的窗口

按control+1查看它是否工作。确保您拥有最新的自动热键版本

^1::WinActivate, % "ahk_pid " GetOldestPIDFromProcessName("chrome.exe")

GetOldestPIDFromProcessName(strProcessName) {

    for oProc in ComObjGet("winmgmts:").ExecQuery("Select ProcessID,CreationDate from Win32_Process WHERE Name = '" strProcessName "'") {           
        nOldestPID := (nOldestPIDCreationDate > oProc.CreationDate) ? oProc.ProcessID : nOldestPID ? nOldestPID : oProc.ProcessID
        nOldestPIDCreationDate := oProc.CreationDate    
    }
    return nOldestPID
}
这一点在我身上起了作用:

; Activate an existing chrome.exe window, or open a new one
if WinExist("ahk_exe chrome.exe")
    WinActivate, ahk_exe chrome.exe
else
    Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

我在

上找到了这个,你有
SetTitleMatchMode
set吗?我有我的as
SetTitleMatchMode,2
和你的WinActivate行,它成功地抓住了最上面的Chrome窗口。还没有尝试过,但听起来很有希望。但是,如果有多个chrome窗口,我的目的是激活最上面的chrome窗口。这似乎不能解决这个问题,对吗?有办法解决吗?啊,我会的。我只是想知道,在我花时间尝试之前,你是否认为它能处理我所说的这个案子。回答这个问题可能需要几秒钟的时间,但我尝试它实际上需要几分钟;)我试过这个代码,它符合我的要求。除此之外,如何更改函数,以便在返回窗口具有特定标题的进程时排除它?(讨论中的窗口是由一个名为“Tabs Outliner”的扩展创建的,因此它不是一个“真正的”chrome窗口,但是如果它是最上面的窗口,它的ID会被返回)。另外,您能否解释一下您的代码是如何工作的/指向可能需要的资源。我有很多AHK经验,但从来没有使用过comObjet()(并且通常只有有限的WinAPI经验)。这是一个很长的尝试,但尝试了执行查询(“选择ProcessID,CreationDate from Win32_Process,其中Name=”'strProcessName'”和Title!='Tabs Outliner')似乎不起作用。意识到在^之前和之后有一个不必要的单引号,但删除它也没有帮助。