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

 Windows7のスナップ機能の「モニタの左右に最大化」にインスパイアされたMouseGesture.ahk向けのスクリプトを、さらに改良してみた。ver.1.2くらいかな?

 改めて説明すると、ウィンドウのタイトルバーをミドルクリックすることで、モニタの左右半分に最大化する。MouseGesture.ahkでインポートして利用する。
 詳しくは前のver.の説明を参照してもらうとして。改良点は、ウィンドウの縦位置を考慮するようになったこと。

 まず前提として、デスクトップはプライマリモニタの左上を始点(0,0)として、横軸(X)と縦軸(Y)による2次元座標で管理されている。以前のver.を実行すると、ウィンドウの上端は必ずY:0にあった。このver.ではそれを改め、最大化後(あるいは左右切り替え時)のY座標を維持するようになった。

 ウィンドウの中には最大化しても、他のウィンドウ(代表的なのはタスクバーだ)を避けるために、上下左右に余白を残すことがある。だから、このver.では最大化した時点を基準として、上下の縦座標(余白)を維持するようになった。要するに、ウィンドウを半最大化した場合でも、問題が起こりにくくなったということ。

 半最大化した状態で左右を切り替えた時も同様だ。ただし、他の手段で移動するなどして、ウィンドウの下端がプライマリモニタの領域からはみ出していた場合、領域内に収めるためにウィンドウの高さを縮める。セカンダリモニタが下にあって困ってなくても問答無用。またタスクバーを考慮しないので、タスクバーがにかぶってしまうことも。仕様である。


[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_WinH() > (Mni1Bottom - MG_WinY())【TAB】【TAB】【TAB】WinY := Mni1Bottom - MG_WinY()【TAB】【TAB】else【TAB】【TAB】【TAB】WinY :=【TAB】【TAB】if ((MG_WinX() = 0) & (MG_WinW() = Mni1W))【TAB】【TAB】【TAB】WinMove, A, , Mni1W, , Mni1W, WinY【TAB】【TAB】else if ((MG_WinX() = Mni1W) & (MG_WinW() = Mni1W))【TAB】【TAB】【TAB】WinMove, A, , 0, , Mni1W, WinY【TAB】【TAB】else if (MG_WinX() + MG_WinW() / 2 >= Mni1W)【TAB】【TAB】【TAB】WinMove, A, , Mni1W, , Mni1W, WinY【TAB】【TAB】else【TAB】【TAB】【TAB】WinMove, A, , 0, , Mni1W, WinY【TAB】} else {【TAB】【TAB】if (MG_WinX() + MG_WinW() /2 >= Mni1W)【TAB】【TAB】{【TAB】【TAB】【TAB】WinMaximize【TAB】【TAB】【TAB】WinMove, A, , Mni1W, , Mni1W, 【TAB】【TAB】} else {【TAB】【TAB】【TAB】WinMaximize【TAB】【TAB】【TAB】WinMove, A, , 0, , Mni1W, 【TAB】【TAB】}【TAB】}

 すでに通常の最大化を行った状態でタイトルバーをミドルクリックをした場合、右側に半最大化される。これを左側にする場合else if (MG_WinX() + MG_WinW() / 2 >= Mni1W + 1)+1を外す。
 左右切り替え時に、ウィンドウ下端を領域内に収めるだけではなく、余白をなくして領域の限界まで広げたい場合、if MG_WinH() > (Mni1Bottom - MG_WinY())と、そのあとに出てくるelseWinY :=を削除かコメントアウト。

 メリットとデメリットを考慮して、相変わらず「マルチモニタ非対応」「タスクバー無視」。タスクバーくらいは対応してもいいかなって気もするが、自分(タスクバーは隠す派)じゃ困ってないしなー。


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

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

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