MouseGesture.ahkでウィンドウ操作メニュー表示してみた。2

 リリース直後に即更新。前回のは実はα版だったんだよ!!! Ω ΩΩ {後付け乙。

 というわけで、ウィンドウ操作メニューを表示するMouseGesture2用スクリプトver.1.0.1。

  • 変更点
    • メニュー呼び出しを「タイトルバー右側のボタンを右クリック」で行うように変更。
    • 操作対象をアクティブウィンドウではなく、右クリックしたウィンドウに変更。
    • 入れ忘れてた最前面固定を追加。

 まず、ソース内のコメントに従い以下のスクリプトを導入。3箇所あるので注意。

; -------- --------- --------- --------- ---------
; 以下を"MG_User.ahk"の初期化処理セクションに追加。
; -------- --------- --------- --------- ---------

MenuId_Max := 0, ItemId := 0, HieLv := 0
MenuId_Cur := "WH" MenuId_Max
Menu, WH0, Add, 最前面, WH_Topmost
Menu, WH0, Add
Loop,Read, WinHack.txt
{
  RegExMatch(A_LoopReadLine, "^\s?([\[\]\;]|----)?\s?([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)", $)
  if(";" == $1)
    Continue
  ItemId++
  if("[" == $1) {
    MenuId_HL%HieLv% := MenuId_Cur
    MenuId_Max++
    MenuId_Cur := "WH" MenuId_Max
    %MenuId_Cur%_Text := $2
    ItemId_HL%HieLv% := ItemId
    ItemId := 0
    HieLv++
    Continue
  }
  if("]" == $1) {
    HieLv--
    MenuId_HLUpp := MenuId_HL%HieLv%
    MenuId_Cur_Text := %MenuId_Cur%_Text
    Menu, %MenuId_HLUpp%, Add, %MenuId_Cur_Text%, :%MenuId_Cur%
    MenuId_Cur := MenuId_HLUpp
    ItemId := ItemId_HL%HieLv%
    Continue
  }
  WM_X%MenuId_Cur%_%ItemId% := $3
  WM_Y%MenuId_Cur%_%ItemId% := $4
  WM_W%MenuId_Cur%_%ItemId% := $5
  WM_H%MenuId_Cur%_%ItemId% := $6
  Menu, %MenuId_Cur%, Add, %$2%, WH_WM
}
Menu, WH0, Add
Menu, WH_WK, Add, 実行, WH_WK
Menu, WH_Etc, Add, 強制終了, :WH_WK
Menu, WH_Etc, Add, プログラムのフォルダを開く(&O), WH_AppDirOpen
Menu, WH_Etc, Add
Menu, WH_Etc, Add, WinHack.txtを開く, WH_SettingOpen
Menu, WH0, Add, その他, :WH_Etc


; -------- --------- --------- --------- ---------
; 以下を"MG_User.ahk"のサブルーチン定義セクションに追加。
; -------- --------- --------- --------- ---------

WH_Show:
  WinGet, state, ExStyle, ahk_id %MG_HWND%
  If ((0x00000008 & state) != 0)
    Menu, WH0, Check, 最前面
  else
    Menu, WH0, UnCheck, 最前面
  Menu, WH0, Show
return

WH_Topmost:
  WinSet, Topmost, TOGGLE, ahk_id %MG_HWND%
return

WH_WM:
  WM_X := WM_X%A_ThisMenu%_%A_ThisMenuItemPos%
  WM_Y := WM_Y%A_ThisMenu%_%A_ThisMenuItemPos%
  WM_W := WM_W%A_ThisMenu%_%A_ThisMenuItemPos%
  WM_H := WM_H%A_ThisMenu%_%A_ThisMenuItemPos%
  WinMove, ahk_id %MG_HWND%, , %WM_X%, %WM_Y%, %WM_W%, %WM_H%
return

WH_WK:
  WinKill, ahk_id %MG_HWND%
return

WH_AppDirOpen:
  wmi := ComObjGet("winmgmts:")
  queryEnum := wmi.ExecQuery(""
    . "Select * from Win32_Process where ProcessId=" . MG_PID)
    ._NewEnum()
  if queryEnum[process] {
    RegExMatch(process.CommandLine, """?([^""]+|[^\s]+)""?", $)
    SplitPath, $1, , AppDir
    Run, explore %AppDir%
  }
  wmi := queryEnum := process := ""
return

WH_SettingOpen:
  Run, WinHack.txt
return


; -------- --------- --------- --------- ---------
; 以下をMouseGesture2にインポート
; -------- --------- --------- --------- ---------

[TitleBarButton]
Custom=MG_HitTest()="MinButton"
Custom=MG_HitTest()="MaxButton"
Custom=MG_HitTest()="CloseButton"

[RB__]
G=RB__
TitleBarButton=GoSub,WH_Show

 [TitleBarButton]、右側ボタンだけだと右側見えてない時に無力なので、「タイトルバーのアイコン」とか「枠」「リサイズ可能な枠」あたりも追加した方がよさげ。ただし「ヘルプボタン」はOperaで誤爆するのでお勧めできない

 次に、"MouseGesture.ahk"と同じ位置に"WinHack.txt"を作成し、ウィンドウ移動・サイズ変更設定を書き込む。書式は以下を参考に。

; -------- --------- --------- --------- ---------
; 書式は以下の通り。
;
; ・"["と"]"でサブメニュー化。ネストも可。
; ・"メニュー項目名, X, Y, Width, Height"でウィンドウ移動・サイズ変更項目を作成可能。
; ・";"で始まる行はコメント行。
; ・上の書式に沿わない行(空改行も含む)はセパレータになる。
; -------- --------- --------- --------- ---------

[移動 (&I)
  基準座標に戻す (&W), 0, 0
  タスクバーを避ける, 165, , ,
  ----
  左656, 0, 0, 656 ,1050
  右1024, 656, 0, 1024 ,1050
  右1024, 656, 0, 1024 ,1050
  ----
  左1024, 0, 0, 1024 ,1050
  右656, 1024, 0, 656 ,1050
]
[リサイズ (&R)
  850*635, , ,850 ,635
  1130*850, , ,1130 ,850
  ----
;  800*600, , ,800 ,600
  1024*768, , ,1024 ,768
  1280*1024, , ,1280 ,1024
]


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

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

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