我花了几个小时试图弄清楚如何使用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(更改焦点监视器),鼠标点击(由其他窗口覆盖)等。似乎没有什么能够始终如一地工作,并且无法谷歌任何合理的答案。
有什么想法吗?
答案 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
}