2013-06-21 32 views
0

感谢@Jeff Axelrod为solution I need a modification to。我无法弄清楚如何改变它,以便它“尊重”我左侧显示器左侧的窗口任务栏。我在我的Win 7任务栏中有许多自定义工具栏,所以它有几英寸宽。下面的代码使两个显示器上的当前窗口最大化,但是扩展窗口的一部分因此位于我的任务栏下方。如何使用AutoHotKey通过左侧的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 

我敢肯定,我失去了一些东西简单在这里,但它一直的那些日子里,一个:-)

这里是一个屏幕快照,显示了窗口怎么是我的任务栏下面。请参阅左上角那里最明显的是最大化的窗口下面:

screenshot of window "not respecting" taskbar

+0

屏幕截图肯定会有很大帮助。 – MCL

+0

好点,谢谢。我会用它更新我的帖子。 – AMM

回答

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 
+0

谢谢!因为我仍然在学习,所以我不确定是否会正确地使用它:是否可以在表达式中以某种方式使用脚本来创建“X1”,“Y1”,“宽度”和“高度“,这样每次脚本运行它都有最新值? – AMM

+0

脚本每次运行时都会获取这些值。我想我不会遵循你所问的。 –

+0

对不起!这是我缺乏知识的途径!我在我的问题中修改了原始脚本,删除了表达式,然后手动输入从脚本中获得的值:'WinMove,%Title%,, 202,0,22998,900'。我想知道是否可以使用脚本为变量创建值,以便每次按下“+#向上”时,都会首先检查正确的值。 – AMM

相关问题