マウス位置でウィンドウ移動【AutoHotKey】
マウス位置でウィンドウ移動…つまりWinMoverやAltMoveのような動作をAutoHotKeyで行うということです。
Windows 7 x64に移行していってますが、Windows 7 x64ではWinMoverが使えません。
そこでWinMover系のソフトを探してみたところ、AltMoveが一番良さそうでこれを使ってました。
元々は、AltMoveを紹介する予定でした。
MDI対応してるのが良かったのですが、更に細かい子ウィンドウまで対応していて、全コントロールが操作出来てしまい、使い辛い面もありました。
スクロールバーが移動出来ちゃったり、アドレスバーが移動出来ちゃったり(笑)
その面、WinMoverは使い勝手がすごく良くて、基本的には親ウィンドウに対し処理され、MDIのCubaseやVisual Basic Editorに対してはそのMDIウィンドウに処理されたので、とても自分には使い勝手が良かったです。しかも安定的でした。
そんな感じでWindows 7 x64ではAltMoveを使ってましたが、何かエクセルMDIでAltMoveとMouseGesture.ahkとで競合するようで、AutoHotKeyで何とかならないか考えたら何とか出来ました。
;ウィンドウ移動 ^!LButton:: WinGet,hWnd,ID,A MouseGetPos,x1,y1 Loop { CoordMode,Mouse,Screen MouseGetPos,x2,y2 WinMove ahk_id %hWnd%,,x2 - x1, y2 - y1 If GetKeyState("LButton","P") = 0 { return } } return ;ウィンドウリサイズ ^+LButton:: WinGet,hWnd,ID,A WinGetActiveStats,w_title,w,h,x3,y3 CoordMode,Mouse,Screen MouseGetPos,x1,y1 Loop { MouseGetPos,x2,y2 WinMove ahk_id %hWnd%,,x3, y3, w - (x1 - x2), h - (y1 - y2) If GetKeyState("LButton","P") = 0 { return } } return
ウィンドウの座標とマウスの座標を取得して、差し引いたりしてWinMoverの動作を再現してます。
動的にWinMove関数に値を入れなければならないため、Loop文を挟みます。
ウィンドウの移動ではCtrl+Alt+左クリックで動作します。
左ボダンを押し上げると解除されます。
つまり、CtrlとAltは初めだけ押下でも可能です。
ウィンドウのリサイズではCtrl+Shift+左クリックで動作して、あとは移動と同じような感じです。
このようなWinMover系のソフトは修飾キーがAltだけのことが多いですが、個人的な事情で、Cubaseの一時的にはさみツールにする動作と被ってしまうので、2つの修飾キーを使用してます。
MDI版はまた今度書きますー
2/8追記:MDIウィンドウ版
http://d.hatena.ne.jp/Shinez/20110208/p1
Windows7で使えるフリーソフトBEST100 (INFOREST MOOK PC・GIGA特別集中講座 372)
- 出版社/メーカー: インフォレスト
- 発売日: 2010/01/01
- メディア: ムック
- クリック: 1回
- この商品を含むブログを見る