人気ブログランキング | 話題のタグを見る

AutoHotKeyで、Windowsデスクトップガジェットを一時非表示にできるようにしてみた。

 Windows7では自由に配置できるようになったデスクトップガジェットだが、操作の邪魔になる状況もちらほら。最前面にして常時表示しておきたいんだけど、それだとガジェットで隠れて操作できない――みたいな。
 というわけで、マウスカーソルがデスクトップガジェットにホバーしている間だけ、デスクトップガジェットを非表示にするAHKスクリプト。――標準でついてるべき機能なんじゃねーの!?

;////////////////////////////////////////////////////////////////////////////////
;
; WindowsDesktopGadgetAvoid.ahk ver.1.1.0
;
;////////////////////////////////////////////////////////////////////////////////

  CoordMode, Mouse, Screen
  SetTimer, WGadgetCheck, 500

$#g::
  SetTimer, WGadgetCheck, Off
  SetTimer, WGadgetRestore, Off
  GroupAdd, WGadget, ahk_class SideBar_HTMLHostWindow
  WinShow, ahk_group WGadget
  Send, #g
  Sleep, 3000
  Reload
return

WGadgetCheck:
  if GetKeyState("Shift") || GetKeyState("Ctrl") || GetKeyState("Alt")
    return
  MouseGetPos, mX, mY, mHWND
  WinGetClass, mClass, ahk_id %mHWND%
  if ("SideBar_HTMLHostWindow" == mClass) {
    WG_Num := 1
    Loop {
      WinGet, WG_HWND, ID, ahk_class BasicWindow
      if ("" == WG_HWND)
        break
      WinGetPos, wX, wY, wW, wH, ahk_id %WG_HWND%
      if (0 < wW) && (0 < wH) {
        GroupAdd, WGadget, ahk_id %WG_HWND%
        WinHide, ahk_id %WG_HWND%
        Win%WG_Num%X := wX, Win%WG_Num%Y := wY, Win%WG_Num%X2 := wX + wW, Win%WG_Num%Y2 := wY + wH
        WG_Num++
      }
    }
    SetTimer, WGadgetRestore, 2000
    SetTimer, WGadgetCheck, Off
  }
return

WGadgetRestore:
  MouseGetPos, mX, mY
  WG_Hover := 0
  Loop, %WG_Num% {
    wX := Win%A_Index%X
    wX2 := Win%A_Index%X2
    wY := Win%A_Index%Y
    wY2 := Win%A_Index%Y2
    if (wX <= mX) && (mX <= wX2) && (wY <= mY) && (mY <= wY2) {
      WG_Hover := 1
      break
    }
  }
  if !WG_Hover {
    WinShow, ahk_group WGadget
    SetTimer, WGadgetCheck, 500
    SetTimer, WGadgetRestore, Off
  }
return

 影のあるガジェット(標準の「時計」など)は影が残ったりするけど実用上問題ないので仕様。
 よく見たらクラス名ついてたので対応。

 修飾キーを押している間は非表示にしないように。

 デスクトップガジェットをマウスで操作したい場合、タスクトレイからスクリプトを停止させるか、Win+Gで3秒ほど停止するのでその間に。

 Win+Gってのは、ガジェットをアクティブにする標準のホットキーなので、「最前面にある必要はないけどたまに見たい」って人は活用すべし。たとえばMG2.ahkで、カーソルを画面端に移動させるとWin+G出すようにするなど。


by lordnoesis | 2012-03-12 21:44 | テクノロジ | Trackback | Comments(0)
ブログトップ | ファンになる