2

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

4

2 回答 2

4

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

按 control+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
}
于 2012-11-22T08:00:48.643 回答
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上找到了这个

于 2013-05-15T06:21:43.487 回答