あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

AutoHotkeyで、Window位置変更

 キーボード中心で操作しているときはマウスをあんまり使いたくない。
 だけども、Windowを動かすときとか、キーボードだけで動かすのは大変すぎる。
 (Alt-Spaceでメニューを開いて、Mで移動を選択。しかる後、方向キーで移動可能)


 ってことで、AutoHotKeyで対応してみることにした。

;引数取得
XParam = %1%
YParam = %2%
mode = %3%

;座標チェック
if XParam is not number
{
 MsgBox XParam value(%XParam%) is not number
 return
}

if YParam is not number
{
 MsgBox YParam value(%YParam%) is not number
 return
}

;全画面サイズ取得(Hは全体の高さ、Wは全体の幅、Shell_TrayWndは、下のツールバー)
WinGetPos, Xpos, YPos, Width, Height, ahk_class Shell_TrayWnd
H = 0
W = %Width%
H += A_ScreenHeight
H -= Height

;ウィンドウサイズ取得
WingetActiveTitle, Title
WinGetPos, Xwin, Ywin, Wwin, Hwin, %Title%

;Option判定
IfEqual, mode, a
{
 ;位置算出(Windowサイズ補正なし)
 XPos = 0
 XPos += W
 XPos *= %XParam%
 YPos = 0
 YPos += H
 YPos *= %YParam%
}
else
{
 ;位置算出(Windowサイズ補正あり)
 XPos = 0
 XPos += W
 XPos -= Wwin
 XPos *= %XParam%
 YPos = 0
 YPos += H
 YPos -= Hwin
 YPos *= %YParam%
}

;Window移動
WingetActiveTitle , Title
WinMove %Title%,, XPos, YPos

 これを、movewin.ahkとか名前を付けて保存する。
 で、コマンドランチャー(私は、bluewindを常駐で使ってる)からそれに引数付けて呼び出す。
 mwは、bluewindで、movewin.ahkに付けた名前。

mw .5 .5

 こんな感じでやると、ランチャー起動の前にアクティブになっていたWindowが、画面中央に移動する。
 最初の引数は、左右の位置。次の引数は上下の位置。
 0だと、Windowの左端が画面の左端にくっつく位置。1だと、Windowの右端が画面の右端にくっつく位置。
 縦も同様。
 三つ目の引数に小文字のaを付けると、Windowの左端が基準で移動するようになる。


 便利かどうかはともかく、勉強がてら、って感じで書いてみた。
 いまいち、仕様がよく分からない感じ。Help英語ってのがきついなぁ。