我正在尝试编写一些简单的 AutoHotkey 脚本来移动窗口,但我无法获得正确的屏幕尺寸值。
我正在尝试获取屏幕上可用区域的大小(通常是全屏分辨率减去任务栏,也可能是任何其他停靠窗口,如 Vista 中的侧边栏)。我发现的两种获取屏幕宽度的方法似乎都不起作用。
我发现的三种获取屏幕尺寸的方法都没有给我正确的值。这是我正在使用的测试脚本(在 XP 上运行,底部的任务栏为其默认大小):
#7::
WinMove A,,0,0,A_ScreenWidth,A_ScreenHeight
return
#8::
;SM_CXMAXIMIZED and SM_CYMAXIMIZED
SysGet, ScreenWidth, 61
SysGet, ScreenHeight, 62
WinMove A,,0,0,ScreenWidth,ScreenHeight
return
#9::
;SM_CXFULLSCREEN and SM_CYFULLSCREEN
SysGet, ScreenWidth, 16
SysGet, ScreenHeight, 17
WinMove A,,0,0,ScreenWidth,ScreenHeight
return
#7 使窗口占据整个分辨率,因此它与任务栏重叠。
#8 导致宽度大于分辨率(我看到窗口的右边缘出现在我的辅助监视器上)并且高度稍大,因此窗口部分与任务栏区域重叠。看起来这是正确的,只是没有考虑边缘的窗户装饰。
#9 似乎有正确的宽度,但高度太短。看起来它是从分辨率的高度中减去任务栏的高度,然后再减去 30 个像素。
我可以只使用我在#9 中的内容,并在我得到的高度上增加 30,但这感觉太像一个会破坏其他配置的黑客。似乎必须有一种方法来正确获取可用的屏幕尺寸,但我在 AutoHotkey 中找不到它。
作为参考,这似乎给了我我在 Java 中需要的东西:
Toolkit.getDefaultToolkit().getScreenSize();