【问题标题】:How can I maximize a window across multiple monitors?如何在多个显示器上最大化一个窗口?
【发布时间】:2012-04-07 09:35:29
【问题描述】:

使用 AutoHotkey,我如何绑定热键以在多个显示器上拉伸/最大化/跨越窗口,使其覆盖两个显示器?

现在,我必须通过用鼠标手动拉伸窗口来做到这一点。我知道有专门的工具可以做到这一点,但我已经在运行 AutoHotkey 脚本,我宁愿限制我继续运行的工具数量。

【问题讨论】:

    标签: autohotkey multiple-monitors


    【解决方案1】:

    我是这样做的,映射Shift + Windows + Up 组合以在所有显示器上最大化一个窗口。这与 Windows 7 的 Windows + Up 热键相得益彰,它可以最大化选定的窗口。

    AHK v1
    +#Up::
        WinGetActiveTitle, Title
        WinRestore, %Title%
       SysGet, X1, 76
       SysGet, Y1, 77
       SysGet, Width, 78
       SysGet, Height, 79
       WinMove, %Title%,, X1, Y1, Width, Height
    return
    
    AHK v2
    +#Up::
    {
        Title := WinGetTitle("A")
        WinRestore(Title)
        X1 := SysGet(76)
        Y1 := SysGet(77)
        Width := SysGet(78)
        Height := SysGet(79)
        WinMove(X1, Y1, Width, Height, Title)
    }
    

    【讨论】:

    • 要让这个在windows VNC客户端上工作,设置->输入并取消选中“将特殊密钥直接传递给VNC服务器”
    • @kevinf,查看SysGet 上的文档。 76 = SM_XVIRTUALSCREEN, 77 = SM_YVIRTUALSCREEN, 78 = SM_CXVIRTUALSCREEN, & 79 = SM_CYVIRTUALSCREEN,但是文档中有更多关于这些值代表什么的信息
    • 除了 Netflix、Youtube 等的全屏模式外,它工作正常。然后它只占用 1 个屏幕。
    • 我有 3 台显示器,有没有办法让其中两台显示器最大化?
    • @BBK 您可以使用自定义输入 WinMove, %Title%,, X1, Y1, <width>, <height>。查看this gist 了解更多信息。
    【解决方案2】:

    我知道这个帖子有点老了,但这是迄今为止我能找到的跨多个显示器最大化的最佳“免费”方式。我现在在 Windows 8 和 7 64 位系统上都使用了它,这个宏可能会成为我默认工具包的一部分 :) 谢谢大家。

    我发帖的原因是我稍微修改了它以将窗口恢复到单个监视器大小,因为一旦 UP 宏运行,您将不得不手动将窗口拖回单个子-如果需要,监视器大小。我已经添加了 shift+windows+down 组合来执行此操作。记住 Windows 的旧位置可能会做得更好,但我不是自动热键专家,这适用于我的目的......(您也可以将“A_ScreenWidth,A_ScreenHeight”更改为 800、600,以便更小的工作并调整 0,0 以使屏幕居中,例如 300,200)

    使用 autohotkey exe 编译器,您就可以在另一台电脑上使用可移植的 exe。 (即我的办公室计算机可以正常运行 exe,但我需要管理员帐户才能安装完整的程序:D)

    +#Up::
        WinGetActiveTitle, Title
        WinRestore, %Title%
       SysGet, X1, 76
       SysGet, Y1, 77
       SysGet, Width, 78
       SysGet, Height, 79
       WinMove, %Title%,, X1, Y1, Width, Height
    return
    
    +#Down::
        WinGetActiveTitle, Title
        WinRestore, %Title%
       WinMove, %Title%,, 0, 0, A_ScreenWidth, A_ScreenHeight
    return
    

    【讨论】:

    • 如果您在+#Down 上保存和恢复原始窗口尺寸,而不是在多个显示器之间最大化和在一个显示器上最大化之间切换,这会明显更好。或者更好的是,在专注于跨区最大化窗口时覆盖 win+down 以反映本机最大化窗口的行为。
    【解决方案3】:

    我在工作和家里有两台显示器,我的任务栏在左边,所以我需要调整这个脚本以确保它正确移动窗口。

    +#Up::
        WinGetActiveTitle, Title
        WinRestore, %Title%
       SysGet, Mon1, MonitorWorkArea, 1 
       SysGet, Mon2, MonitorWorkArea, 2 
       Monitor1Width := Mon1Right - Mon1Left
       Monitor2Width := Mon2Right - Mon2Left
       MonitorsWidth := Monitor1Width + Monitor2Width
       SysGet, Height, 79
       WinMove, %Title%,, %Mon1Left%, %Mon1Top%, %MonitorsWidth%, %Mon2Bottom%
    return
    
    +#Down::
        WinGetActiveTitle, Title
        WinRestore, %Title%
       SysGet, Mon2, MonitorWorkArea, 1
       Monitor1Width := Mon2Right - Mon2Left
       WinMove, %Title%,, %Mon2Left%, %Mon2Top%, %Monitor1Width%, %Mon2Bottom%
    return
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2010-11-21
      • 2018-09-26
      • 1970-01-01
      相关资源
      最近更新 更多