我正在尝试使用AutoHotkey来激活最顶级的Google Chrome窗口。这是我正在使用的代码:
WinActivate, ahk_class Chrome_WidgetWin_1
然而,它似乎没有任何效果。
尝试
WinGet nChromeWindows, Count, ahk_class Chrome_WidgetWin_1
使nChromeWindows
变量获得的值大于1,即使只打开一个chrome窗口也是如此。这表明上面的WinActivate无法正常工作的原因是,即使只有一个“实际”窗口,也会出现多个Chrome“窗口”。
任何人都可以解释发生了什么以及如何识别“真正的”(最顶层)Chrome窗口吗?
TIA,Himanshu
答案 0 :(得分:3)
Google Chrome会创建多个子流程,每个流程都拥有一个窗口,其中包含Chrome扩展程序或标签的背景窗口。因此,您需要找出最旧的进程,即所有进程的父进程,并激活最旧进程使用的窗口。
按控制键+ 1查看是否有效。确保您拥有最新的AutoHotkey版本。
^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
}
答案 1 :(得分:2)
这对我有用:
; 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"
上找到了这个