使用Autohotkey快捷方式在Chrome窗口之间移动

时间:2015-04-15 07:41:35

标签: windows google-chrome autohotkey

我花了几个小时试图弄清楚如何使用Autohotkey快捷方式在特定的Chrome窗口之间切换。

我有两台显示器。左侧监视器(nr 1)在Chrome localhost窗口和Vim编辑器之间垂直分割。右侧显示器(nr 2)使用我的Gmail,搜索选项卡等Chrome全屏。

我想用ahk快捷方式在窗口之间切换,例如Alt + 1(localhost monitor nr 1),Alt + 2(Chrome窗口监视器nr 2)。

如果Windows有不同的标题,这很容易做到。我尝试使用标题,文本,ahk_id,ahk_class,sysget(更改焦点监视器),鼠标点击(由其他窗口覆盖)等。似乎没有什么能够始终如一地工作,并且无法谷歌任何合理的答案。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

此代码应该适合您。一个热键激活最左边的镀铬窗口。另一个是激活最右边的

CoordMode, Pixel, Screen

!1::
    ChromeList := GetWinListByClass("Chrome_WidgetWin_1")

    LeftmostPos := 9999
    LeftmostId := ""
    Loop, % ChromeList.MaxIndex()
    {
        currentId := ChromeList[A_Index][1]
        currentX := ChromeList[A_Index][2]

        if (currentX < LeftmostPos)
        {
            LeftmostPos := currentX
            LeftmostId := currentId
        }
    }

    WinActivate, % "ahk_id" LeftmostId
    Return

!2::
    ChromeList := GetWinListByClass("Chrome_WidgetWin_1")

    RightmostPos := -9999
    RightmostId := ""
    Loop, % ChromeList.MaxIndex()
    {
        currentId := ChromeList[A_Index][1]
        currentX := ChromeList[A_Index][2]

        if (currentX > RightmostPos)
        {
            RightmostPos := currentX
            RightmostId := currentId
        }
    }

    WinActivate, % "ahk_id" RightmostId
    Return


GetWinListByClass(filterClass)
{
    WinGet, all, list
    ChromeList := {}
    winCount := 1
    Loop, %all%
    {
        WinGetClass, WClass, % "ahk_id " all%A_Index%
        if (WClass = filterClass)
        {
            winId := all%A_Index%
            WinGetPos, X, Y, W, H, % "ahk_id " winId 
            ChromeList[winCount] := [winId, X]
            winCount++
        }
    }
    return ChromeList
}