MouseGesture.ahkで"半画面"してみた。5

 なんとなくほぼゼロから作り直してマルチモニタとタスクバーに対応させてみたver.2。
 マルチモニタ対応なら簡単かなーと思ったら、タスクバー避ける方が簡単だった罠。

 改めて説明すると、これはWindows7のAeroSnapのように「モニタの左右どちらかに最大化」できる「MouseGesture.ahk」用のジェスチャースクリプト。ウィンドウのタイトルバーをミドルクリック(ホイールクリック)することで"半画面化"でき、その状態でさらに同じ操作をすると逆側に移動する。
 ver.2からはマルチモニタ環境に対応。「タスクバーを自動的に隠す」設定でなくとも問題なく半画面化可能。そのほか、解像度によっては半画面化の切り替えができない問題とかも改善。

[TitleBar]
Custom=MG_HitTest()="Caption"

[MB__]
G=MB__
TitleBar=WinActivate【TAB】WinHC := MG_WinH() // 2 + MG_WinY()【TAB】WinWC := MG_WinW() // 2 + MG_WinX()【TAB】【TAB】Loop, 3【TAB】{【TAB】【TAB】Cnt := A_Index - 1【TAB】【TAB】SysGet, Mnt, MonitorWorkArea, %Cnt%【TAB】【TAB】if ((MntTop < WinHC) && (WinHC < MntBottom) && (MntLeft < WinWC) && (WinWC < MntRight))【TAB】【TAB】【TAB】break【TAB】}【TAB】MntWC := (MntRight - MntLeft) // 2【TAB】【TAB】offset := 0【TAB】if (MG_Win("MinMax") == 1) {【TAB】【TAB】if (MG_WinW() == MntWC) {【TAB】【TAB】【TAB】if (MG_WinX() == MntLeft + MntWC) {【TAB】【TAB】【TAB】【TAB】offset := 0 - MntWC【TAB】【TAB】【TAB】} else {【TAB】【TAB】【TAB】【TAB】if (MG_WinX() == MntLeft) {【TAB】【TAB】【TAB】【TAB】【TAB】offset := MntWC【TAB】【TAB】【TAB】【TAB】}【TAB】【TAB】【TAB】}【TAB】【TAB】}【TAB】} else {【TAB】【TAB】WinMaximize【TAB】}【TAB】【TAB】if (MG_WinY() < MntTop) {【TAB】【TAB】WinTY := MntTop【TAB】【TAB】WinTH := MntBottom - MntTop【TAB】} else {【TAB】【TAB】WinTY := MG_WinY()【TAB】【TAB】WinTH := MntBottom - MG_WinY()【TAB】}【TAB】【TAB】if (WinWC - MntLeft + offset >= MntWC) {【TAB】【TAB】WinMove, A, , MntLeft + MntWC, WinTY, MntWC, WinTH【TAB】} else {【TAB】【TAB】WinMove, A, , MntLeft, WinTY, MntWC, WinTH【TAB】}
CWEditor=Send,{LButton}{AppsKey}{Down}{Enter}{BS}

 実際やってみたらMonitorWorkArea使うだけでよかったので、もっと早くやっとけばよかったか。しかし、大して機能は増えてないくせに、処理とスクリプト量は増えたなぁ……。

 モニタが4つ以上ある環境では"Loop, 3"の数字を増やす。別に数字なくても(無制限でも)いいはずなんだが、安全策で。


[PR]
by lordnoesis | 2011-03-17 10:54 | テクノロジ | Trackback | Comments(0)
トラックバックURL : http://poimono.exblog.jp/tb/16065312
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
名前
URL
画像認証
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

ブログトップ | ファンになる