0

感谢@Jeff Axelrod我需要修改的解决方案。我无法弄清楚如何更改它,以便它“尊重”我保留在左侧显示器左侧的 Windows 任务栏。我的 Win 7 任务栏中有许多自定义工具栏,所以它有几英寸宽。下面的代码在两个监视器上最大化当前窗口,但该扩展窗口的一部分因此位于我的任务栏下方。

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

我确定我在这里遗漏了一些简单的东西,但那是那些日子之一:-)

这是一个屏幕截图,显示了窗口在我的任务栏下方的位置。请参考左上角最明显的最大化窗口位于下方:

窗口截图

4

1 回答 1

1

您正在寻找MonitorWorkArea,即MonitorWorkAreaLeft您的屏幕截图的外观。

获取所有监视器信息的脚本:

SysGet, MonitorCount, MonitorCount
SysGet, MonitorPrimary, MonitorPrimary
Message .= "Monitor Count:`t" MonitorCount "`nPrimary Monitor:`t" MonitorPrimary
Loop, %MonitorCount%
{
    SysGet, MonitorName, MonitorName, %A_Index%
    SysGet, Monitor, Monitor, %A_Index%
    SysGet, MonitorWorkArea, MonitorWorkArea, %A_Index%
    Message .= "`n`nMonitor:`t#" A_Index "`nName:`t" MonitorName "`nLeft:`t" MonitorLeft "(" MonitorWorkAreaLeft " work)`nTop:`t" MonitorTop " (" MonitorWorkAreaTop " work)`nRight:`t" MonitorRight " (" MonitorWorkAreaRight " work)`nBottom:`t" MonitorBottom "(" MonitorWorkAreaBottom " work)"
}

msgbox % Message

找到您想要使用的正确监视器后,使用坐标值:

SysGet, MonitorWorkArea, MonitorWorkArea, 2
msgbox % MonitorWorkAreaLeft

编辑

这将在每次运行时获取值并移动窗口。

SysGet, MonitorWorkArea, MonitorWorkArea, 1 ; Leftmost monitor
X1 := MonitorWorkAreaLeft
Y1 := MonitorWorkAreaTop
SysGet, MonitorWorkArea, MonitorWorkArea, 2 ; Rightmost monitor
Width := MonitorWorkAreaRight - X1
Height := MonitorWorkAreaBottom

WinGetActiveTitle, Title
WinMove, % Title,, % X1, % Y1, % Width, % Height
于 2013-06-21T17:02:41.763 回答