AutoHotKeyで、画像ビューア(MassiGra)の複数ウィンドウ運用を便利にしてみた。

 MassiGraのウィンドウを切り替えたり、並べたりするAHK_Lスクリプト。ANSI版でもたぶん動く。
 MassiGraでなくとも応用効くと思う。

 MassiGraのキー設定で「現在のファイルを開く : Num.」「前のファイル : 上」「次のファイル : 下」にして、複数の画像を開く運用をしていて、ウィンドウ切り替えが面倒なので書いてみた。

 左右キーでウィンドウ切り替え。Ctrl+右でひとつ前のウィンドウを避けて配置。Ctrl+左はリセット(左端に配置)。Esc長押しですべてのMassiGraを閉じる。

;--------------------------------------------------
; MassiGra
;--------------------------------------------------
#WinActivateForce
#IfWinActive ahk_class TF811202_MassiGra_Main

Left::
  WinSet,Bottom,, ahk_class TF811202_MassiGra_Main
  WinActivate, ahk_class TF811202_MassiGra_Main
return

Right::
  WinActivateBottom, ahk_class TF811202_MassiGra_Main
return

$Esc::
  KeyWait, Esc, T1
  if ErrorLevel
  {
    GroupAdd, Massigras, ahk_class TF811202_MassiGra_Main
    GroupClose, Massigras, A
    BefWin_X := 0, BefWin_W := 0, BefWin_XW := 0
  } else {
    Send, {Esc}
  }
  KeyWait, Esc
return

^Left::
  BefWin_X := 0, BefWin_W := 0, BefWin_XW := 0
^Right::
  if (BefWin_XW == NULL)
    BefWin_X := 0, BefWin_W := 0, BefWin_XW := 0

  WinGetActiveStats, NowWin_T, NowWin_W, NowWin_H, NowWin_X, NowWin_Y

  if (BefWin_XW + NowWin_W > A_ScreenWidth) {
    if (BefWin_X == 0) {
      Move_X := A_ScreenWidth - NowWin_W
    } else {
      Move_X := 0
      if (NowWin_W > BefWin_X) {
        if (NowWin_W > (A_ScreenWidth - BefWin_W))
          WinMove, ahk_id %BefWin_Hwnd%, , A_ScreenWidth - BefWin_W
        else
          WinMove, ahk_id %BefWin_Hwnd%, , NowWin_W
      }
    }
  } else {
    Move_X := BefWin_XW
  }

  BefWin_Hwnd := WinActive(A)
  BefWin_X := Move_X
  BefWin_W := NowWin_W
  BefWin_XW := BefWin_X + BefWin_W

  WinMove, Move_X
  WinActivateBottom, ahk_class TF811202_MassiGra_Main
return

 ウィンドウ配置はYも考慮するとややこしくなるので妥協。

 使いやすいタブ対応画像ビューアさえあれば……。


[PR]
by lordnoesis | 2011-11-21 20:56 | テクノロジ | Trackback | Comments(0)
ブログトップ | ファンになる