AutoHotkey で起動したコマンドプロンプトウィンドウを画面中央に配置する
ウィンドウ操作の練習も兼ねて書いてみた。
コード
#Left:: Run, cmd WinWait, 管理者:,,0 WinActivate WinGetPos, posx, posy, sizex, sizey, A WinMove A,, (A_ScreenWidth/2)-(sizex/2), (A_ScreenHeight/2)-(sizey/2) Return
コード解説
; Win + Left で開く例(この割り当てに深い意味はない) #Left:: ; コマンドプロンプト起動 Run, cmd ; コマンドプロンプトウィンドウが現れるのを待つ(0指定だと0.5秒) WinWait, 管理者:,,0 ; 現れたウィンドウをアクティブ(以後の関数の操作対象)にする WinActivate ; アクティブウィンドウの位置とサイズを取得 ; A ← アクティブウィンドウの意 WinGetPos, posx, posy, sizex, sizey, A ; 画面中央に配置する ; ; 計算は画面座標とウィンドウサイズを使って導出している; WinMove A,, (A_ScreenWidth/2)-(sizex/2), (A_ScreenHeight/2)-(sizey/2) Return
(余談) ウィンドウを画面中央に配置する計算式
ウィンドウサイズを wx, wy、画面サイズを sx, sy とする。
まず画面中央座標は sx/2
、sy/2
となる。ここにウィンドウをそのまま配置するとどうなるか。……ウィンドウの左上が中央にある、ような位置取りとなっており、ウィンドウが中央に配置されたとは言えない。
じゃあ次はどうするか。ウィンドウを左上方向に向かってずらせばよさそうだ。
ではどの程度ずらせばよいか。それが「ウィンドウサイズのちょうど 1/2 分」である。つまり wx/2
、wy/2
。
以上をまとめると、ウィンドウを画面中央に配置するには sx/2 - wx/2
、sy/2 - wy/2
に配置すればいいことになる。
※図があればわかりやすいが描く気力無かった。。。