无法使用AutoHotkey识别Google Chrome窗口

时间:2012-11-21 18:46:03

标签: google-chrome autohotkey

我正在尝试使用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

2 个答案:

答案 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"

我在http://l.autohotkey.net/docs/misc/WinTitle.htm

上找到了这个