マニュアル > Tips一覧 > AutoHotKey > パネルを自動的に隠す

「マニュアル/Tips一覧/AutoHotKey/パネルを自動的に隠す」の編集履歴(バックアップ)一覧はこちら

マニュアル/Tips一覧/AutoHotKey/パネルを自動的に隠す - (2010/05/18 (火) 06:36:55) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

- やや修正 -- 名無し (2010-01-19 01:41:55) - やや修正 -- 名無し (2010-01-23 07:06:35) - ナビゲータも消せるように。1辺の周辺を反応範囲にできるように。ほかやや修正。 -- 名無し (2010-04-05 09:16:30) #comment(,disableurl) #highlight(lisp){{ ;////////////////////////////////////////////////////////// ; HkSaiパネラー ; 無保証・再配布・改変自由 ; ; 動作 AutoHotKey 1.0.48.05 ; 推奨 SAI 1.1.0 ; ; 使用法 ;  指定したパネルからカーソルが遠ざかるとパネルが隠れます。 ;  ひらがなカタカナキーで機能の停止・再開が切り替えできます。 ; ; 2010/04/05 ウィンドウの非表示方法を、透明度を0にする方式に変更。 ; 2010/01/23 HIDE/SHOWが遅いので、DLL直に変更。 ホットキー押してる時だけ表示(AllShowRealtime())追加 ; 2010/01/10 修正 ; 2009/12/26 ;  作成 ; ;----------------------------------------------------------- ; 設定 ;----------------------------------------------------------- ;パネル全体指定の場合 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadLeave:=-30 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadClose:=10 ;辺指定の場合 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadRectLeave:=-70 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadRectClose:=50 ;マウスをチェックする間隔(ms) TimerMiliSec:=50 ;消すパネルを選ぶ 0=消さない 1=消す ;ツールパネルを消す SW_TOOL:=1 ;カラーパネルを消す SW_COL:=1 ;レイヤーパネルを消す SW_LAY:=1 ;ナビゲータを消す SW_NAV:=1 ;マウスの反応範囲 ; ... 0 パネルを中心 ; ... 1 ..xx ; ... 2 右辺を中心 ; ... 3 ..xx ; ... 4 左辺を中心 ;ツールパレット HEN_TOOL:=0 ;カラーパレット HEN_COL:=0 ;レイヤパレット HEN_LAY:=2 ;ナビゲ HEN_NAV:=0 ;----------------------------------------------------------- ;設定ここまで ;----------------------------------------------------------- ;----------------------------------------------------------- ;初期化 ;----------------------------------------------------------- #MaxThreads 1 #MaxThreadsPerHotkey 1 #SingleInstance IGNORE #HotkeyInterval 1000 ; This is the default value (milliseconds). #MaxHotkeysPerInterval 50 ; This is the default value. Menu, Tray,Icon, B:\settings\icon\panel.ico CoordMode, Mouse, Screen ForceToShow:=0 IsPanelVisible:=1 ;パネル検索用データ TA_TOOL:="ツール ahk_class sfl_window_class" TA_COL:="カラー ahk_class sfl_window_class" TA_LAY:="レイヤー ahk_class sfl_window_class" TA_NAV:="ナビゲータ ahk_class sfl_window_class" ;対象パネルの情報を取得 SetTitleMatchMode,3 if (SW_TOOL=1){ WinGet, temp1, ID, %TA_TOOL% hWnd_TOOL:=temp1 TA_TOOL:="ahk_id " temp1 } if (SW_COL=1){ WinGet, temp2, ID, %TA_COL% hWnd_COL:=temp2 TA_COL:="ahk_id " temp2 } if (SW_LAY=1){ WinGet, temp3, ID, %TA_LAY% hWnd_LAY:=temp3 TA_LAY:="ahk_id " temp3 } if (SW_NAV=1){ WinGet, temp3, ID, %TA_NAV% hWnd_NAV:=temp3 TA_NAV:="ahk_id " temp3 } SetTitleMatchMode,1 ;終了時 OnExit, ExitSub ; MsgBox, 4160, , OKを押すとHkSaiパネラー動作開始します ;タイマー SetTimer, MouseCheck, %TimerMiliSec% return ;------------------------------------------------------------- ;以下ルーチン ;----------------------------------------------------------- ShowWindow(switch,TA) ;----------------------------------------------------------- ;ウィンドウの表示/非表示を切替 ; switch … 0=Hide 1=Show ;----------------------------------------------------------- { if(switch=0){ WinSet, Trans, 0, ahk_id %TA% } if(switch=1){ WinSet, Trans, 255, ahk_id %TA% } return } AllShow() ;----------------------------------------------------------- ; 基本機能のオンオフ切替 ;----------------------------------------------------------- { global hWnd_TOOL,hWnd_COL,hWnd_LAY,hWnd_NAV global ForceToShow if(ForceToShow=0){ SetTimer, MouseCheck, Off ShowWindow(1,hWnd_TOOL) ShowWindow(1,hWnd_COL) ShowWindow(1,hWnd_LAY) ShowWindow(1,hWnd_NAV) ForceToShow:=1 return } if(ForceToShow=1){ SetTimer, MouseCheck, On ForceToShow:=0 return } return } AllShowRealtime() ;----------------------------------------------------------- ; 基本機能のオンオフ切替 (押してる間だけ) ;----------------------------------------------------------- { global hWnd_TOOL,hWnd_COL,hWnd_LAY,hWnd_NAV global ForceToShow ;機能停止 SetTimer, MouseCheck, Off ShowWindow(1,hWnd_TOOL) ShowWindow(1,hWnd_COL) ShowWindow(1,hWnd_LAY) ShowWindow(1,hWnd_NAV) ForceToShow:=1 ;待ち loop{ GetKeyState, Joy1Stat, Joy1 If (Joy1Stat="U") break sleep,50 } ;機能再開 SetTimer, MouseCheck, On ForceToShow:=0 return } AllHide() ;----------------------------------------------------------- ; すべてのパネルを隠す ;----------------------------------------------------------- { global SW_TOOL,SW_COL,SW_LAY,SW_NAV global hWnd_TOOL,hWnd_COL,hWnd_LAY,hWnd_NAV if SW_TOOL=1 ShowWindow(0,hWnd_TOOL) if SW_COL=1 ShowWindow(0,hWnd_COL) if SW_LAY=1 ShowWindow(0,hWnd_LAY) if SW_NAV=1 ShowWindow(0,hWnd_NAV) return } IsHit(X,Y,XL,YU,XR,YB,IsPanelVisible,Rect) ;----------------------------------------------------------- ; 二つの矩形の当たり判定を行う ; X,Y … マウス位置 ; XL,YU,XR,YB … 矩形2 ; IsPanelVisible… パネルが表示されてるかどうか ; Rect ... 0 無指定 ; ... 1 上辺..未実装(ごめんネ!) ; ... 2 右辺 ; ... 3 下辺..未実装(ごめんネ!) ; ... 4 左辺 ;----------------------------------------------------------- { global PadLeave,PadClose,PadRectLeave,PadRectClose ;パネルがある時(パネルから離れるとき) if(IsPanelVisible){ ;tooltip, IsPanelVisible %IsPanelVisible% %Pad% ;左辺 if (Rect=4){ if( (XL + PadRectLeave < X ) && (X < XR - PadRectLeave ) && (YU + PadRectLeave < Y ) && (Y < YB - PadRectLeave ) ) return true } ;右辺 if (Rect=2){ if( (XL + PadRectLeave < X ) && (X < XR - PadRectLeave ) && ( YU + PadRectLeave < Y ) && (Y < YB - PadRectLeave ) ) return true } ;無指定(中心) if (Rect=0){ if( ( XL + PadLeave < X ) && ( X < XR - PadLeave ) && ( YU + PadLeave < Y ) && ( Y < YB - PadLeave ) ) return true } } ;パネルがない時(パネルに近づくとき) if(IsPanelVisible=0){ ;tooltip, IsPanelVisible %IsPanelVisible% %Pad% ;左辺 if (Rect=4){ if( ( XL < X ) && ( X < XL + PadRectClose ) && ( YU < Y ) && ( Y < YB ) ) return true } ;右辺 if (Rect=2){ if( ( XR - PadRectClose < X ) && ( X < XR ) && ( YU < Y ) && ( Y < YB ) ) return true } ;無指定(中心) if (Rect=0){ if( ( XL + PadClose < X ) && ( X < XR - PadClose ) && ( YU + PadClose < Y ) && (Y < YB - PadClose ) ) return true } } return false } MouseCheck: ;----------------------------------------------------------- ;マウスチェック処理 ;----------------------------------------------------------- If !WinActive("ahk_class sfl_window_class"){ AllHide() return } loop{ LButtonStat:=GetKeyState("LButton") If (LButtonStat=0) break sleep,100 } MouseGetPos, X , Y if (SW_TOOL=1){ ;// ツール ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_TOOL% WinGetPos, X1, Y1, W, H, %TA_TOOL% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_TOOL) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_TOOL) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_TOOL) ;//////////////////////// } if (SW_COL=1){ ;// カラー ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_COL% WinGetPos, X1, Y1, W, H, %TA_COL% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_COL) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_COL) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_COL) ;//////////////////////// } if (SW_LAY=1){ ;// レイヤー ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_LAY% WinGetPos, X1, Y1, W, H, %TA_LAY% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_LAY) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_LAY) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_LAY) ;//////////////////////// } if (SW_NAV=1){ ;// ナビゲータ ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_NAV% WinGetPos, X1, Y1, W, H, %TA_NAV% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_NAV) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_NAV) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_NAV) ;//////////////////////// } ;tooltip hey apple! return ExitSub: ;----------------------------------------------------------- ;終了処理 ;----------------------------------------------------------- SetTimer, MouseCheck, Off if SW_TOOL=1 ShowWindow(1,hWnd_TOOL) if SW_COL=1 ShowWindow(1,hWnd_COL) if SW_LAY=1 ShowWindow(1,hWnd_LAY) if SW_NAV=1 ShowWindow(1,hWnd_NAV) exitapp ;----------------------------------------------------------- ;----------------------------------------------------------- #IfWinActive, SAI ahk_class sfl_window_class vkF2sc070::AllShow() ;ひらがなカタカナキーvkF2sc070: Joy1::AllShowRealtime() ;----------------------------------------------------------- #IfWinActive ~^F12::Reload }}
- やや修正 -- 名無し (2010-01-19 01:41:55) - やや修正 -- 名無し (2010-01-23 07:06:35) - ナビゲータも消せるように。1辺の周辺を反応範囲にできるように。ほかやや修正。 -- 名無し (2010-04-05 09:16:30) コメントは1つ上の階層へどうぞ。 #highlight(lisp){{ ;////////////////////////////////////////////////////////// ; HkSaiパネラー ; 無保証・再配布・改変自由 ; ; 動作 AutoHotKey 1.0.48.05 ; 推奨 SAI 1.1.0 ; ; 使用法 ;  指定したパネルからカーソルが遠ざかるとパネルが隠れます。 ;  ひらがなカタカナキーで機能の停止・再開が切り替えできます。 ; ; 2010/04/05 ウィンドウの非表示方法を、透明度を0にする方式に変更。 ; 2010/01/23 HIDE/SHOWが遅いので、DLL直に変更。 ホットキー押してる時だけ表示(AllShowRealtime())追加 ; 2010/01/10 修正 ; 2009/12/26 ;  作成 ; ;----------------------------------------------------------- ; 設定 ;----------------------------------------------------------- ;パネル全体指定の場合 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadLeave:=-30 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadClose:=10 ;辺指定の場合 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadRectLeave:=-70 ; この数が多いほど、検出範囲は実際のウィンドウサイズより内側になる。 PadRectClose:=50 ;マウスをチェックする間隔(ms) TimerMiliSec:=50 ;消すパネルを選ぶ 0=消さない 1=消す ;ツールパネルを消す SW_TOOL:=1 ;カラーパネルを消す SW_COL:=1 ;レイヤーパネルを消す SW_LAY:=1 ;ナビゲータを消す SW_NAV:=1 ;マウスの反応範囲 ; ... 0 パネルを中心 ; ... 1 ..xx ; ... 2 右辺を中心 ; ... 3 ..xx ; ... 4 左辺を中心 ;ツールパレット HEN_TOOL:=0 ;カラーパレット HEN_COL:=0 ;レイヤパレット HEN_LAY:=2 ;ナビゲ HEN_NAV:=0 ;----------------------------------------------------------- ;設定ここまで ;----------------------------------------------------------- ;----------------------------------------------------------- ;初期化 ;----------------------------------------------------------- #MaxThreads 1 #MaxThreadsPerHotkey 1 #SingleInstance IGNORE #HotkeyInterval 1000 ; This is the default value (milliseconds). #MaxHotkeysPerInterval 50 ; This is the default value. Menu, Tray,Icon, B:\settings\icon\panel.ico CoordMode, Mouse, Screen ForceToShow:=0 IsPanelVisible:=1 ;パネル検索用データ TA_TOOL:="ツール ahk_class sfl_window_class" TA_COL:="カラー ahk_class sfl_window_class" TA_LAY:="レイヤー ahk_class sfl_window_class" TA_NAV:="ナビゲータ ahk_class sfl_window_class" ;対象パネルの情報を取得 SetTitleMatchMode,3 if (SW_TOOL=1){ WinGet, temp1, ID, %TA_TOOL% hWnd_TOOL:=temp1 TA_TOOL:="ahk_id " temp1 } if (SW_COL=1){ WinGet, temp2, ID, %TA_COL% hWnd_COL:=temp2 TA_COL:="ahk_id " temp2 } if (SW_LAY=1){ WinGet, temp3, ID, %TA_LAY% hWnd_LAY:=temp3 TA_LAY:="ahk_id " temp3 } if (SW_NAV=1){ WinGet, temp3, ID, %TA_NAV% hWnd_NAV:=temp3 TA_NAV:="ahk_id " temp3 } SetTitleMatchMode,1 ;終了時 OnExit, ExitSub ; MsgBox, 4160, , OKを押すとHkSaiパネラー動作開始します ;タイマー SetTimer, MouseCheck, %TimerMiliSec% return ;------------------------------------------------------------- ;以下ルーチン ;----------------------------------------------------------- ShowWindow(switch,TA) ;----------------------------------------------------------- ;ウィンドウの表示/非表示を切替 ; switch … 0=Hide 1=Show ;----------------------------------------------------------- { if(switch=0){ WinSet, Trans, 0, ahk_id %TA% } if(switch=1){ WinSet, Trans, 255, ahk_id %TA% } return } AllShow() ;----------------------------------------------------------- ; 基本機能のオンオフ切替 ;----------------------------------------------------------- { global hWnd_TOOL,hWnd_COL,hWnd_LAY,hWnd_NAV global ForceToShow if(ForceToShow=0){ SetTimer, MouseCheck, Off ShowWindow(1,hWnd_TOOL) ShowWindow(1,hWnd_COL) ShowWindow(1,hWnd_LAY) ShowWindow(1,hWnd_NAV) ForceToShow:=1 return } if(ForceToShow=1){ SetTimer, MouseCheck, On ForceToShow:=0 return } return } AllShowRealtime() ;----------------------------------------------------------- ; 基本機能のオンオフ切替 (押してる間だけ) ;----------------------------------------------------------- { global hWnd_TOOL,hWnd_COL,hWnd_LAY,hWnd_NAV global ForceToShow ;機能停止 SetTimer, MouseCheck, Off ShowWindow(1,hWnd_TOOL) ShowWindow(1,hWnd_COL) ShowWindow(1,hWnd_LAY) ShowWindow(1,hWnd_NAV) ForceToShow:=1 ;待ち loop{ GetKeyState, Joy1Stat, Joy1 If (Joy1Stat="U") break sleep,50 } ;機能再開 SetTimer, MouseCheck, On ForceToShow:=0 return } AllHide() ;----------------------------------------------------------- ; すべてのパネルを隠す ;----------------------------------------------------------- { global SW_TOOL,SW_COL,SW_LAY,SW_NAV global hWnd_TOOL,hWnd_COL,hWnd_LAY,hWnd_NAV if SW_TOOL=1 ShowWindow(0,hWnd_TOOL) if SW_COL=1 ShowWindow(0,hWnd_COL) if SW_LAY=1 ShowWindow(0,hWnd_LAY) if SW_NAV=1 ShowWindow(0,hWnd_NAV) return } IsHit(X,Y,XL,YU,XR,YB,IsPanelVisible,Rect) ;----------------------------------------------------------- ; 二つの矩形の当たり判定を行う ; X,Y … マウス位置 ; XL,YU,XR,YB … 矩形2 ; IsPanelVisible… パネルが表示されてるかどうか ; Rect ... 0 無指定 ; ... 1 上辺..未実装(ごめんネ!) ; ... 2 右辺 ; ... 3 下辺..未実装(ごめんネ!) ; ... 4 左辺 ;----------------------------------------------------------- { global PadLeave,PadClose,PadRectLeave,PadRectClose ;パネルがある時(パネルから離れるとき) if(IsPanelVisible){ ;tooltip, IsPanelVisible %IsPanelVisible% %Pad% ;左辺 if (Rect=4){ if( (XL + PadRectLeave < X ) && (X < XR - PadRectLeave ) && (YU + PadRectLeave < Y ) && (Y < YB - PadRectLeave ) ) return true } ;右辺 if (Rect=2){ if( (XL + PadRectLeave < X ) && (X < XR - PadRectLeave ) && ( YU + PadRectLeave < Y ) && (Y < YB - PadRectLeave ) ) return true } ;無指定(中心) if (Rect=0){ if( ( XL + PadLeave < X ) && ( X < XR - PadLeave ) && ( YU + PadLeave < Y ) && ( Y < YB - PadLeave ) ) return true } } ;パネルがない時(パネルに近づくとき) if(IsPanelVisible=0){ ;tooltip, IsPanelVisible %IsPanelVisible% %Pad% ;左辺 if (Rect=4){ if( ( XL < X ) && ( X < XL + PadRectClose ) && ( YU < Y ) && ( Y < YB ) ) return true } ;右辺 if (Rect=2){ if( ( XR - PadRectClose < X ) && ( X < XR ) && ( YU < Y ) && ( Y < YB ) ) return true } ;無指定(中心) if (Rect=0){ if( ( XL + PadClose < X ) && ( X < XR - PadClose ) && ( YU + PadClose < Y ) && (Y < YB - PadClose ) ) return true } } return false } MouseCheck: ;----------------------------------------------------------- ;マウスチェック処理 ;----------------------------------------------------------- If !WinActive("ahk_class sfl_window_class"){ AllHide() return } loop{ LButtonStat:=GetKeyState("LButton") If (LButtonStat=0) break sleep,100 } MouseGetPos, X , Y if (SW_TOOL=1){ ;// ツール ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_TOOL% WinGetPos, X1, Y1, W, H, %TA_TOOL% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_TOOL) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_TOOL) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_TOOL) ;//////////////////////// } if (SW_COL=1){ ;// カラー ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_COL% WinGetPos, X1, Y1, W, H, %TA_COL% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_COL) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_COL) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_COL) ;//////////////////////// } if (SW_LAY=1){ ;// レイヤー ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_LAY% WinGetPos, X1, Y1, W, H, %TA_LAY% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_LAY) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_LAY) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_LAY) ;//////////////////////// } if (SW_NAV=1){ ;// ナビゲータ ////////////////////// ;ウィンドウある? WinGet, IsPanelVisible , Transparent, ahk_id %hWnd_NAV% WinGetPos, X1, Y1, W, H, %TA_NAV% hit:=IsHit(X,Y, X1,Y1,X1+W,Y1+H,IsPanelVisible,HEN_NAV) ;出す if (hit=1 && !IsPanelVisible) ShowWindow(1,hWnd_NAV) ;消す if (hit=0 && IsPanelVisible && ForceToShow=0) ShowWindow(0,hWnd_NAV) ;//////////////////////// } ;tooltip hey apple! return ExitSub: ;----------------------------------------------------------- ;終了処理 ;----------------------------------------------------------- SetTimer, MouseCheck, Off if SW_TOOL=1 ShowWindow(1,hWnd_TOOL) if SW_COL=1 ShowWindow(1,hWnd_COL) if SW_LAY=1 ShowWindow(1,hWnd_LAY) if SW_NAV=1 ShowWindow(1,hWnd_NAV) exitapp ;----------------------------------------------------------- ;----------------------------------------------------------- #IfWinActive, SAI ahk_class sfl_window_class vkF2sc070::AllShow() ;ひらがなカタカナキーvkF2sc070: Joy1::AllShowRealtime() ;----------------------------------------------------------- #IfWinActive ~^F12::Reload }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: