ウィンドウを移動するためのいくつかの簡単な AutoHotkey スクリプトを作成しようとしていますが、正しい画面サイズの値を取得するのに問題があります。
画面上の使用可能な領域のサイズを取得しようとしています (通常、全画面解像度からタスクバーを差し引いたものと、Vista のサイドバーのような他のドッキング ウィンドウ)。画面幅を取得するために見つけた方法はどちらも機能していないようです。
画面サイズを取得するために見つけた 3 つの方法のいずれも、適切な値を提供していません。私が使用しているテストスクリプトは次のとおりです(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();