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

 前回のスクリプトを少し強化してみた。ものをさらに少し改良してみた。しかも3回ほど。要するにver.1.1c?

 タイトルバーを中クリックすると、プライマリモニタの左右どちらかに"半最大化"するMouseGesture.ahkスクリプト。"どちらか"はウィンドウの状態によって異なる。ウィンドウが通常の最大化状態ならば左側に、"半最大化"しており定位置にあるならその反対側に。それらのどれでもなければ、ウィンドウの中心座標が画面中央より左側なら左、右側なら右に"半最大化"される。
 ま、要するに左右切り替えれるようにしたってだけね。

[TitleBar]
Custom=MG_HitTest()="Caption"
[MB__]
G=MB__
TitleBar=WinActivate【TAB】SysGet, Mni1, Monitor,1【TAB】Mni1W := Mni1Right / 2【TAB】if (MG_Win("MinMax") = 1)【TAB】{【TAB】【TAB】if ((MG_WinX() = 0) & (MG_WinW() = Mni1W))【TAB】【TAB】【TAB】WinMove, A, , Mni1W, 0, Mni1W, Mni1Bottom【TAB】【TAB】else if ((MG_WinX() = Mni1W) & (MG_WinW() = Mni1W))【TAB】【TAB】【TAB】WinMove, A, , 0, 0, Mni1W, Mni1Bottom【TAB】【TAB】else if (MG_WinX() + MG_WinW() / 2 >= Mni1W + 1)【TAB】【TAB】【TAB】WinMove, A, , Mni1W, 0, Mni1W, Mni1Bottom【TAB】【TAB】else【TAB】【TAB】【TAB】WinMove, A, , 0, 0, Mni1W, Mni1Bottom【TAB】} else {【TAB】【TAB】if (MG_WinX() + MG_WinW() /2 >= Mni1W)【TAB】【TAB】{【TAB】【TAB】【TAB】WinMaximize【TAB】【TAB】【TAB】WinMove, A, , Mni1W, 0, Mni1W, Mni1Bottom【TAB】【TAB】} else {【TAB】【TAB】【TAB】WinMaximize【TAB】【TAB】【TAB】WinMove, A, , 0, 0, Mni1W, Mni1Bottom【TAB】【TAB】}【TAB】}

 通常最大化時のミドルクリックを左側"半最大化"ではなく右側"半最大化"にするには、else if (MG_WinX() + MG_WinW() / 2 >= Mni1W + 1)の「+1」を外してください。


 相変わらずマルチモニタ実質非対応。ver.1の「右側にのみ"半最大化"可」っていうのもそうだったけど、"半最大化"したあと手動で動かせばいいよねっていう。

 そもそもMG.ahkは、プライマリより左/上にある(座標がマイナスになる)モニタでのタイトルバー検知に非対応っぽい?
 もしそれが可能で、スクリプトをマルチモニタに対応させるとしたら――SysGetでモニタ総数数えてループさせて、全モニタの領域サイズ取得して、ウィンドウの現在座標と比較して……? うーむ、ちょっと便利がすごく"重い"。

 あと、タスクバーを考慮してないので、「タスクバーを自動的に隠す」がONでないとウィンドウの一部がタスクバーにめり込みます。

 タスクバー考慮するなら、SysGetを「MonitorWorkArea」にして、WinGetPosで「ahk_class Shell_TrayWnd」=タスクバーの位置やサイズ測って、ウィンドウ座標に反映させて――わし、「隠す」だからいいや(ぐへ。


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

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

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