【问题标题】:Unable to identify Google Chrome Window using AutoHotkey无法使用 AutoHotkey 识别 Google Chrome 窗口
【发布时间】:2012-11-21 18:46:02
【问题描述】:

我正在尝试使用 AutoHotkey 来激活最顶部的 Google Chrome 窗口。这是我正在使用的代码:

WinActivate, ahk_class Chrome_WidgetWin_1

但是,它似乎没有任何效果。

尝试

WinGet nChromeWindows, Count, ahk_class Chrome_WidgetWin_1

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

谁能解释发生了什么以及如何识别“真正的”(最上面的)Chrome 窗口?

TIA,喜满洲

【问题讨论】:

  • 您有SetTitleMatchMode 设置吗?我有我的SetTitleMatchMode, 2,后面跟着你的 WinActivate 行,它成功地抓取了最上面的 Chrome 窗口。

标签: google-chrome autohotkey


【解决方案1】:

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
}

【讨论】:

  • 还没试过,但听起来很有希望。但是,如果有多个,我的意图是激活 topmost chrome 窗口。这似乎无法解决这个问题,对吧?有没有办法解决这个问题?
  • 啊,我会的。在我花时间尝试之前,只是想知道您是否认为它会处理我正在谈论的情况。您可能需要几秒钟的时间才能回答,白我尝试它实际上需要 分钟 ;)
  • 我尝试了代码,它可以很好地满足我的要求。除了,我怎样才能改变函数,以便我可以将它排除在返回窗口具有特定标题的进程之外? (有问题的窗口是由一个名为“Tabs Outliner”的扩展程序创建的,所以它不是一个“真正的”chrome 窗口,但如果它是最顶层的窗口,它的 ID 仍然会返回)。另外,您能否解释一下您的代码是如何工作的/指向的资源。我有很多 AHK 经验,但从未使用过 ComObjGet()(并且通常只有有限的 WinAPI 经验)。
  • 这是一个很长的尝试,但尝试ExecQuery("Select ProcessID,CreationDate from Win32_Process WHERE Name = '" strProcessName "' AND Title != 'Tabs Outliner' ") 似乎没有用。
  • 意识到 AND 之前有一个不必要的单引号^,但删除它也没有帮助。
【解决方案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找到了这个

【讨论】:

    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多