Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 【タイトル】タイトルバーアクション
- 【 概要 】
- 【 Type 】AHK Script[Hotkey系]
- 【 Site 】http://pastebin.com/4ZHJVHTV
- 【 更新日 】2020/02/25
- 【 要依存 】あり
- ■ホットキー
- L…左クリック/ドラッグ
- LL…メニュー(menuHackerモドキ)
- R…奥に表示
- M…通常終了
- C+ M…強制終了
- C+ L…最前面
- S+ L…シェード
- CS+ L…タイトル取得
- + R…クラス名取得
- ■メニュー
- フォルダを開く…タブ/ウィンドウ
- コピー…フルパス/フォルダパス/ファイル名/コマンドライン/PID/タイトル/クラス名
- リサイズ…定形/上下左右半分
- 最前面
- 優先度
- プロパティ
- ■要依存
- □MG_CommandLine() [ぴょんきち] ※MouseGestureL.ahk内 http://hp.vector.co.jp/authors/VA018351/mglahk.html
- □_Lib.ahk http://pastebin.com/t0TNWd8S
- □MouseIsOver() http://pastebin.com/QC69R09p
- □SetPriority_*() http://pastebin.com/TnRd7dmC
- □ToolTip() http://pastebin.com/uHuBttNb
- □WinActive_*() http://pastebin.com/ByEVDxmk
- □WinMove() http://pastebin.com/YdEbm8J9
- */
- #Include <_Lib>
- ;【Hotkey】
- ;[タイトルバー上]
- ; L│左クリック/ドラッグ
- ; LL│メニュー(menuHackerモドキ)
- ; 〃│Soda
- ; R│奥に表示
- ; M│通常終了
- ; C+ M│強制終了
- ; C+ L│最前面
- ; S+ L│シェード
- ;CS+ L│タイトル取得
- ; + R│クラス名取得
- ; タイトルバー…(onTitleBar() = 2)
- ; …(Acc_GetRole() = "タイトル バー")
- ;システムメニュー…(onTitleBar() = 3)
- ; 最小化ボタン…(Acc_GetName() = "最小化" && Acc_GetRole() = "ボタン")
- ; 最大化ボタン…(Acc_GetName() = "最大化" && Acc_GetRole() = "ボタン")
- ; 元に戻すボタン…(Acc_GetName() = "元のサイズに戻す" && Acc_GetRole() = "ボタン")
- ; 閉じるボタン…(Acc_GetName() = "閉じる" && Acc_GetRole() = "ボタン")
- ;Acc.ahk http://ux.getuploader.com/autohotkeyl/download/76/
- ;マウスカーソル下のデータ取得サンプル関数.ahk
- ;{タイトルバー}
- ;(除外)
- ;AutoHotkey…メインウィンドウ/ダイアログボックス(MsgBox)
- ;Soda…エクスプローラー/ダイアログボックス
- #If (onTitleBar() = 2 ;[除外]
- && !WinActive_2(A_ScriptName " ahk_class AutoHotkey") ;AutoHotkey メインウィンドウ
- && !WinActive("ahk_class #32770 ahk_exe AutoHotkey.exe") ;AutoHotkey ダイアログボックス(MsgBox)
- && !WinActive("ahk_class CabinetWClass") ;エクスプローラー
- && !WinActive_R("^((ファイル|フォルダー)[のを]|名前を付けて保存) ahk_class #32770")) ;ダイアログボックス
- LButton::
- ;Sクリック
- if (A_PriorHotkey <> A_ThisHotkey || A_TimeSincePriorHotkey > 500) {
- Send {LButton Down}
- KeyWait, LButton
- Send {LButton Up}
- ;Wクリック
- } else {
- ;取得
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinGet, PID, PID, ahk_id %hWnd% ; PID取得(PID)
- WinGet, ProcessPath, ProcessPath, ahk_id %hWnd% ; フルパス取得(ProcessPath)
- SplitPath, ProcessPath,, FolderPath ;フォルダパス取得(FolderPath)
- WinGet, ProcessName, ProcessName, ahk_id %hWnd% ; ファイル名取得(ProcessName)
- WinGetTitle, Title, ahk_id %hWnd% ; タイトル取得(Title)
- WinGetClass, ClassName, ahk_id %hWnd% ; クラス名取得(ClassName)
- Priority := Priority(ProcessName) ; 優先度取得(Priority)
- WinGetPos, X, Y, Width, Height, ahk_id %hWnd% ;ウィンドウポジション、サイズ取得
- WinGet, ExStyle, ExStyle, ahk_id %hWnd% ;ウィンドウ拡張スタイル取得
- ;メニュー
- ;フォルダを開く(Sub)
- MenuAdd("タブ|ウィンドウ", "Open", "TitleBar")
- ;コピー(Sub)
- MenuAdd("フルパス|フォルダパス|ファイル名|コマンドライン|PID||タイトル|クラス名", "Copy", "TitleBar")
- ;リサイズ(Sub)
- MenuAdd("640×480|800×600|1024×768||上半分|下半分|左半分|右半分||" Width "×" Height " [A]|x``:" X " y``:" Y, "Resize", "TitleBar")
- MenuDisable(Width "×" Height " [A]|x:" X " y:" Y, "Resize")
- ;Notes
- ;MenuAdd/Ins()内のコロン文字自身「:」→「``:」
- ;優先度(Sub)
- MenuAdd("リアルタイム(&R)|高(&H)|通常以上(&A)|通常(&N)|通常以下(&B)|低(&L)", "Priority", "TitleBar")
- (Priority = "Realtime") ? MenuCheck("リアルタイム(&R)", "Priority") : MenuCheck("リアルタイム(&R)", "Priority", 1)
- (Priority = "High") ? MenuCheck("高(&H)" , "Priority") : MenuCheck("高(&H)" , "Priority", 1)
- (Priority = "AboveNormal") ? MenuCheck("通常以上(&A)" , "Priority") : MenuCheck("通常以上(&A)" , "Priority", 1)
- (Priority = "Normal") ? MenuCheck("通常(&N)" , "Priority") : MenuCheck("通常(&N)" , "Priority", 1)
- (Priority = "BelowNormal") ? MenuCheck("通常以下(&B)" , "Priority") : MenuCheck("通常以下(&B)" , "Priority", 1)
- (Priority = "Low") ? MenuCheck("低(&L)" , "Priority") : MenuCheck("低(&L)" , "Priority", 1)
- ;メインメニュー
- MenuAdd("フォルダを開く:Open|コピー:Copy|リサイズ:Resize|最前面(&T)|優先度(&P):Priority|プロパティ(&R)",, "TitleBar")
- (ExStyle & 0x8) ? MenuCheck("最前面(&T)") : MenuCheck("最前面(&T)",, 1)
- ;メニュー表示/削除
- MenuShow("Copy|Resize")
- }
- return
- #If
- ;ラベル
- TitleBar:
- Switch A_ThisMenuItem {
- ;フォルダを開く
- Case "タブ" : Run, %FolderPath%
- Case "ウィンドウ" : Run, explorer /e`,/select`,%ProcessPath%
- ;コピー
- Case "フルパス" : Clipboard := ProcessPath
- Case "フォルダパス" : Clipboard := FolderPath
- Case "ファイル名" : Clipboard := ProcessName
- Case "コマンドライン" : Clipboard := MG_CommandLine(PID)
- Case "PID" : Clipboard := PID
- Case "タイトル" : Clipboard := Title
- Case "クラス名" : Clipboard := ClassName
- ;リサイズ
- Case "640×480" : WinMove, ahk_id %hWnd%,,,, 640, 480
- Case "800×600" : WinMove, ahk_id %hWnd%,,,, 800, 600
- Case "1024×768" : WinMove, ahk_id %hWnd%,,,, 1024, 768
- Case "上半分" : WinMove("上半", "ahk_id " hWnd)
- Case "下半分" : WinMove("下半", "ahk_id " hWnd)
- Case "左半分" : WinMove("左半", "ahk_id " hWnd)
- Case "右半分" : WinMove("右半", "ahk_id " hWnd)
- ;最前面
- Case "最前面(&T)" : WinSet, AlwaysOnTop, Toggle, ahk_id %hWnd%
- ;優先度
- Case "リアルタイム(&R)": SetPriority(ProcessName, "R")
- Case "高(&H)" : SetPriority(ProcessName, "H")
- Case "通常以上(&A)" : SetPriority(ProcessName, "A")
- Case "通常(&N)" : SetPriority(ProcessName, "N")
- Case "通常以下(&B)" : SetPriority(ProcessName, "B")
- Case "低(&L)" : SetPriority(ProcessName, "L")
- ;プロパティ
- Case "プロパティ(&R)" : Run, properties %ProcessPath%
- }
- ;コピー
- (A_ThisMenu = "Copy") ? ToolTip(Clipboard,,,, 1)
- return
- ;(すべて)
- #If (onTitleBar() = 2)
- ;奥に表示(R)
- RButton::
- ;除外
- a := MouseIsOver("Orchis ahk_exe orchis.exe") ;Orchis
- if a {
- Send {RButton}
- return
- }
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinSet, Bottom,, ahk_id %hWnd% ;奥に表示
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinActivate, ahk_id %hWnd% ;アクティブ化
- return
- ;通常終了(M)
- MButton::
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinGet, ProcessName, ProcessName, ahk_id %hWnd% ;ファイル名取得
- Switch ProcessName {
- ;秀丸エディタ
- Case "Hidemaru.exe":
- Send {LButton} ;アクティブ化
- Send !{F4} ;通常終了(Alt+F4)
- ;その他
- Default:
- WinClose, ahk_id %hWnd% ;通常終了(WinClose)
- }
- return
- ;強制終了(Ctrl+M)
- ^MButton::
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinGet, PID, PID, ahk_id %hWnd% ;PID取得
- WinGetClass, ClassName, ahk_id %hWnd% ;クラス名取得
- if (ClassName = "Ghost") ;Ghostウィンドウ
- SoundPlay, *16 ; エラー音
- else { ;その他
- MsgBox("AutoHotkey", "強制終了しますか?`n[AT YOUR OWN RISK]", 2, 2) ; 警告メッセージ(いいえ)
- IfMsgBox, Yes, Process, Close, %PID% ; はい ⇒ 強制終了
- IfMsgBox, No , SoundPlay, *16 ; いいえ ⇒ エラー音
- } ; }
- return
- ;最前面(Ctrl+L)
- ^LButton::
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinGetTitle, Title, ahk_id %hWnd% ;タイトル取得
- WinSet, AlwaysOnTop, Toggle, ahk_id %hWnd% ;最前面トグル
- if isTopMost() ;最前面⇒
- WinSetTitle, ahk_id %hWnd%,, %Title%[最前面] ; タイトル[最前面]
- else ;No最前面⇒
- WinSetTitle, ahk_id %hWnd%,, % RegExReplace(Title, "[最前面]$", "") ; タイトル
- return
- ;シェード(Shift+L)
- +LButton::
- SetWinDelay, 0 ;hoge
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinGetPos, X, Y, Width, Height, ahk_id %hWnd% ;ウィンドウポジション、サイズ取得
- if (%hWnd%Height > 0) { ;復元時処理
- Height := %hWnd%Height ; 高さセット
- %hWnd%Height = ; 変数解放
- } else { ;シェード時処理
- %hWnd%Height := Height ; 高さ保存
- Height := 26 ; 高さセット
- } ; }
- WinMove, ahk_id %hWnd%,, %X%, %Y%, %Width%, %Height% ;ウィンドウ処理
- return
- ;タイトル取得(Ctrl+Shift+L)
- ^+LButton::
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinGetTitle, Title, ahk_id %hWnd% ;タイトル取得
- Clipboard := RegExReplace(Title, "[最前面]$", "") ;クリップボードセット
- ToolTip(Clipboard,,,, 1) ;音付ツールチップ表示(ms)
- return
- ;クラス名取得(Ctrl+Shift+R)
- ^+RButton::
- MouseGetPos,,, hWnd ;マウスカーソル下のウィンドウハンドル取得
- WinGetClass, ClassName, ahk_id %hWnd% ;クラス名取得
- Clipboard := ClassName ;クリップボードセット
- ToolTip(Clipboard,,,, 1) ;音付ツールチップ表示(ms)
- return
- #If
- ;{システムメニュー}
- ;#If (onTitleBar() = 3 ;[除外]
- ; && !WinActive_2(A_ScriptName " ahk_class AutoHotkey") ;AutoHotkey メインウィンドウ
- ; && !WinActive("ahk_class #32770 ahk_exe AutoHotkey.exe")) ;AutoHotkey ダイアログボックス(MsgBox)
- ; ;左ダブルクリック禁止
- ; LButton::
- ; ;Sクリック
- ; if (A_PriorHotkey <> A_ThisHotkey || A_TimeSincePriorHotkey > 500) {
- ; Send {LButton Down}
- ; KeyWait, LButton
- ; Send {LButton Up}
- ; }
- ; return
- ;#If
- ;{最小化ボタン}
- ;#If (Acc_GetName() = "最小化" && Acc_GetRole() = "ボタン")
- ;#If
- ;{最大化ボタン}
- ;#If (Acc_GetName() = "最大化" && Acc_GetRole() = "ボタン")
- ;#If
- ;{元に戻すボタン}
- ;#If (Acc_GetName() = "元のサイズに戻す" && Acc_GetRole() = "ボタン")
- ;#If
- ;{閉じるボタン}
- ;#If (Acc_GetName() = "閉じる" && Acc_GetRole() = "ボタン")
- ;#If
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement