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