約 2,312,898 件
https://w.atwiki.jp/juria/pages/70.html
最近使ったファイル RecentView.ahk bookmark_hatena 「最近使ったファイル」をリストアップ、migemo でインクリメンタルサーチ @あれこれ-2007年7月参照 [2008-01-25]シェルのコンテキストメニューを開けるように [2007-09-29]右クリックメニュー追加 /* RecentView.ahk 2008.01.25 版 「最近使ったファイル」をリストアップ、migemo でインクリメンタルサーチ ・流行らせるページ管理人 さまの migemo.ahk を使用させていただいてます。 http //lukewarm.s101.xrea.com/myscripts/index.html 必要なファイルは migemo.ahk を参照のこと。 ・ファイル名・フォルダ名とリンク先ファイルの拡張子を一覧表示 ・エディット部にファイル名の一部を入力(migemo スタート) ・タイトルバーにファイル総数、ステータスバーにマッチファイル数を表示 ・タブでコントロールを移動、カーソルキーでリスト移動・選択 ・項目を選択すると、ステータスバーにリンク先のディレクトリを表示。 ・項目をダブルクリック、または選択状態にして Enter でリンク先のパスを ポチエス関連付け版に渡す。 ・右クリックメニューから、 ・リンク先ファイルのあるフォルダ(リンク先がフォルダの場合はその 上位フォルダ)を開く、 ・リンク先ファイル・フォルダ(target)のフルパスをクリップボードにコピー、 ・リンク先ファイル・フォルダ(target)のコンテキストメニューを開く、 ・ショートカットファイルをゴミ箱に入れる(個別・全て)。 フルパスのコピーは poafag さまの file ///形式とかでフルパス取得する AHK(http //d.hatena.ne.jp/poafag/20060831/1157027879)を、 コンテキストメニュー表示は Contextmenu(http //cspace.s2.xrea.com/ 単機能ツール集)を使わせて頂いてます。 ・拡張子欄が空欄になってるものは、フォルダ。 ・フォルダへのショートカットの場合、ファイル名中、つまりフォルダ名に [.] があると拡張子として表示してしまう→動作には問題なし。 */ #Include %A_ScriptDir%\migemo.ahk pochi_s = D \Application\Launcher\esExt5\esExt5.exe ; ポチエスのパス recent = %UserProfile%\Recent\*.* ;;; ----- 一覧作成 ----- GUI, Margin, 1, 1 Gui, Add, Edit, vEdit gMatch w200 Gui, Add, ListView, r20 w200 AltSubmit vRecentView gRecentView, Name|Ext Gui, +Resize Gui, Add, Button, xm+30 Default gButtonOpenFile, OpenThis Gui, Add, Button, x+30 gButtonCancel, Cancel Gui, Add, StatusBar MigemoOpen(A_ScriptDir "\dict\migemo-dict") ; 「最近使ったファイル」リスト Loop, %recent% { lists() } LV_ModifyCol(1, 142) ; 列の幅指定 LV_ModifyCol(2, 36) LV_ModifyCol(2, "Sort") ; 2列目でソート LV_Modify(1,"Select Focus") ; ソート後1行目を選択・フォーカス SB_SetParts(30) ; ステータスバーの分割幅指定 Gui, Show, , %num% recent files ;タイトルバー(最近使ったファイルの総数) Return ;;; ----- インクリメンタルサーチ ----- Match GuiControlGet,Ed,,Edit len = StrLen(Ed) LV_Delete() GuiControl,-Redraw,RecentView MigemoSet(Ed) Loop, %recent% { filename = A_LoopFileName Loop, Parse, filename, "`n" { StringSplit, file, filename, . if(len 0) { ifInString, A_LoopField, %Ed% { lists() } else if(MigemoMatch(A_LoopField) len 1) { lists() } } if(len = 0) lists() } } LV_ModifyCol(2, "Sort") ; 2列目でソート LV_Modify(1,"Select Focus") ; ソート後1行目を選択・フォーカス GUIControl, +Redraw, RecentView Return ;;; ----- イベント ----- RecentView ; ダブルクリック if A_GuiEvent = DoubleClick { targetfile() Run, %pochi_s% %OutTarget% } ;Return ; 項目選択 if A_GuiEvent = I ; リストビューの選択状態 { targetfile() if ErrorLevel = S ; 選択されたら Outdir = %OutDir% num = LV_GetCount(S) SB_SetText(A_Space num, 1) ; ステータスバーに表示 SB_SetText(OutDir, 2) } Return ; [Open This]ボタン、ENTER ButtonOpenFile targetfile() Run, %pochi_s% %OutTarget% Return ; 右クリックメニュー・アプリケーションキー GuiContextMenu Menu, ContextMenu, Add, directory, target Menu, ContextMenu, Add, clip path, clip Menu, ContextMenu, Add, Shell ContextMenu, context Menu, ContextMenu, Add, recycle, recycle Menu, ContextMenu, Add, recycleAll, recycleAll Menu, ContextMenu, Show Return target targetfile() ;Run, D \Application\Filer\afx0165\yaafxcmd.exe -s -l "%OutDir%" Run, %pochi_s% %OutDir% Return clip targetfile() Run, %A_ScriptDir%\AutoHotkey.exe %A_ScriptDir%\scripts\file_path.ahk "%OutTarget%" Return context targetfile() Run, path\to\ContextMenu.exe "%OutTarget%" Return recycle FileRecycle, %UserProfile%\Recent\%file%.lnk Gosub, Match ; サーチ中の最新状態にするか ; re() ; 全ファイルのリストを更新するか Return recycleAll FileRecycle, %UserProfile%\Recent\*.lnk re() Return ;;; ----- ファイルリスト表示関数 ----- lists() { global SplitPath,A_LoopFileFullPath,file,dir,ext,name,drive SplitPath, name, file,dir,ext,name,drive StringSplit, file, name, . ; ファイル名を.で分割 If file0 2 ; 分割した文字列が3つ以上なら { LV_Add("", name) ; ファイル名のみ表示 } else { LV_Add("", name, ext) ; 2分割以下なら } num = LV_GetCount() } ;;; ----- リスト再取得 ----- re() { global LV_Delete() GuiControl,-Redraw,RecentView Loop, %recent% { lists() } LV_ModifyCol(2, "Sort") ; 2列目でソート LV_Modify(1,"Select Focus") ; ソート後1行目を選択・フォーカス GUIControl, +Redraw, RecentView GuiControl, , Edit ; GuiControl, Focus, Edit } ;;; ----- リンク先の情報取得関数 ----- targetfile() { global SelectedFile = LV_GetNext(0, "F") ;LV_GetText(OutputVar, RowNumber [, ColumnNumber]) LV_GetText(file, SelectedFile, 1) LV_GetText(ext, SelectedFile, 2) If ext = { file = %file% FileGetShortcut, %UserProfile%\Recent\%file%.lnk, OutTarget SplitPath, OutTarget, , OutDir } else { file = %file%.%ext% IfInString, ext, lnk { FileGetShortcut, %UserProfile%\Recent\%file%, OutTarget SplitPath, OutTarget, , OutDir } else { FileGetShortcut, %UserProfile%\Recent\%file%.lnk, OutTarget ;, OutDir SplitPath, OutTarget, , OutDir } } Return } ButtonCancel GuiClose GuiEscape MigemoClose() ExitApp -
https://w.atwiki.jp/konngou/pages/2.html
メニュー トップページ ここを編集
https://w.atwiki.jp/eamat/pages/29.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 /************************************************************************ マウス関数群 (MUS.ahk) グローバル変数 なし 各関数の依存性 なし(必要関数だけ切出してコピペでも使えます) AutoHotkey Version 1.1.24.00 Language Japanease Platform Win9x/NT Author eamat. 2009.01.07************************************************************************2012.11.09 マルチディスプレイ マイナス座標値対策2012.11.13 関数名見直し MUS_CheckOnTitleBar → MUS_IsTitleBar MUS_CheckOnTitleBarEX → MUS_GetTitleBarPos2016.11.18 MS-Officeのタイトルバーに個別対応2019.04.22 CoordModeの不要処理削除 (def_cmode)*/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 動作確認用 内部ルーチン; 単体起動時のテスト用なので削除しても問題なし; ※ Hotkey設定してますが#Include時は AutoexecueSectionは; 無視されるだけなのでほっといていいです。 _MUS_Autoexecue_Sample Hotkey,~Rbutton,_MUS_SampleClick Hotkey,~Mbutton,_MUS_SampleTitlebar Hotkey,+ESC,_MUS_SampleExitreturn _MUS_SampleClick ;トリプル以上を取りたい場合はタイムアウト値を多めにする必要があります Tooltip, % MUS_MultiClickCheck()のテスト`nクリック回数 MUS_MultiClickCheck(A_ThisHotkey,0,800)return _MUS_SampleTitlebar _MUS_test()return _MUS_SampleExit ExitApp _MUS_test() { r1 = MUS_IsTitleBar(0) r2 = MUS_IsTitleBar(1) r3 = MUS_GetTitleBarPos(h3,0) r4 = MUS_GetTitleBarPos(h4,1) msg = ---マウスがタイトルバー上にあるかどうか---`n . MUS_IsTitleBar(MdiChild=0)`n`n . MDI子ウィンドウはみない - r1 `n . MDI子ウィンドウもみる - r2 `n`n . ---マウスがタイトルバー上のどこにあるか---`n . MUS_GetTitleBarPos(byref rhWnd, MdiChild=0)`n`n . MDI子ウィンドウはみない - r3 h3 `n . MDI子ウィンドウもみる - r4 h4 tooltip,%msg% };---------------------------------------------------------------------------; 汎用関数;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; マウスがタイトルバー上にあるかチェックし、ウィンドウハンドルを返す; 対象: AHK v1.0.43.06以降; in MdiChild 1 MDI子ウィンドウを対象に含める; 戻り値 ウィンドウハンドル (0 Not Found);++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;MUS_CheckOnTitleBar(MdiChild=0, def_cmode=1) { MUS_IsTitleBar(MdiChild=0) { ;--- マウス座標値直下のコントロールハンドル取得 --- CoordMode,Mouse,Screen MouseGetPos,sX,sY,hWnd,chWnd,3 ;2007.03.30 sY += (sY 0) ? 0xFFFF 0 ;マルチディスプレイ対策 2012.11.09 sX += (sX 0) ? 0xFFFF 0 SendMessage,0x84,0,% (sY 16)|sX,,ahk_id %chWnd% ;WM_NCHITTEST If (ErrorLevel = 0xFFFFFFFF) MouseGetPos,,,,chWnd,2 hWnd = ((MdiChild) ( chWnd)) ? chWnd hWnd WinGet, WinStyle, Style, ahk_id %hWnd% ; MS-Office タイトルバー対策 2016.11.18 MouseGetPos, , , ,clsnn,1 hWnd = Instr(clsnn, NetUIHWND ) ? chWnd hWnd ;--- マウスがタイトルバー上にあるかチェック --- if (WinStyle 0x00C00000 = 0x00C00000) { ;WS_CAPTION SendMessage,0x84,0,% (sY 16)|sX,,ahk_id %hWnd% ;WM_NCHITTEST if (ErrorLevel = 2) return hWnd } return 0 ;マウス下:タイトルなし };++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; マウスがタイトルバー上の何処にあるかチェックして返す; 対象: AHK v1.0.43.06以降 作成 2008.11.29;; out rhWnd マウス下ウィンドウハンドル; in MdiChild 1 MDI子ウィンドウを対象に含める;; 戻り値; 2 (HTCAPTION) キャプションバー上にある; 3 (HTSYSMENU) システムメニューアイコン上; 8 (HTMINBUTTON) [_] アイコン化ボタン上にある; 9 (HTMAXBUTTON) [□] 最大化ボタン上にある; 20 [x] 閉じるボタン上にある; 21 [?] ヒントボタン上にある; 0 タイトルバー上でない;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;MUS_CheckOnTitleBarEX(byref rhWnd, MdiChild=0, def_cmode=1) { MUS_GetTitleBarPos(byref rhWnd, MdiChild=0) { ;--- マウス座標値直下のコントロールハンドル取得 --- CoordMode,Mouse,Screen MouseGetPos,sX,sY,hWnd,chWnd,3 ;2007.03.30 MouseGetPos, , , ,clsnn,1 ;2016.11.18 sY += (sY 0) ? 0xFFFF 0 ;マルチディスプレイ対策 2012.11.09 sX += (sX 0) ? 0xFFFF 0 SendMessage,0x84,0,% (sY 16)|sX,,ahk_id %chWnd% ;WM_NCHITTEST cret = ErrorLevel If (ErrorLevel = 0xFFFFFFFF) MouseGetPos,,,,chWnd,2 hWnd = ((MdiChild) ( chWnd)) ? chWnd hWnd WinGet, WinStyle, Style, ahk_id %hWnd% ;--- マウスがタイトルバー上にあるかチェック --- if (WinStyle 0x00C00000 = 0x00C00000) { ;WS_CAPTION rhWnd = hWnd SendMessage,0x84,0,% (sY 16)|sX,,ahk_id %hWnd% ;WM_NCHITTEST ret = ErrorLevel if RegExMatch(ret, ^(2|3|8|9|20|21) ) return ret ; MS-Office タイトルバー対策 2016.11.18 else if Instr(clsnn, NetUIHWND ) RegExMatch(cret, ^2 ) return cret } return 0 ;マウス下:タイトルなし };++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; 割と厳密な多重クリックチェック; 対象: AHK v1.0.34以降; in button 対象マウスボタン; MaxCount チェックする最大クリック回数(0で無制限); timout タイムアウト(デフォルト=システムWクリック時間); 戻り値 マウスクリック回数;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MUS_MultiClickCheck(button,MaxCount=2,timout=0) { button = RegExReplace(button, i)[\+\^!# \*~\$] , ) ;モデファイヤ削除 ;1クリック目が発生してないなら即終了 GetKeyState, push, %button%, P ifEqual,push,U, return 0 ;--- タイムアウト時間セット --- timout = (!timout) ? DllCall( User32.dll\GetDoubleClickTime ,Int) timout timout += A_TickCount ;--- ダブルクリック位置許容範囲を取得 --- MouseGetPos, x1 , y1 SysGet,cx,36 ;SM_CXDOUBLECLK SysGet,cy,37 ;SM_CYDOUBLECLK ph = 1 MaxPh = MaxCount*2 -1 Loop { ;--- マウスクリック/解除チェック --- ;奇数フェーズ クリック解除待ち / 偶数フェーズ クリック待ち opt = (1 = mod(ph,2)) ? U D ;奇数フェーズ KeyWait, %button%, %opt% T0.01 ph += (!ErrorLevel) ? 1 0 if (A_TickCount timout) || ((0 MaxCount) (ph MaxCount*2-1)) break ;--- マウス移動量チェック --- MouseGetPos, x2 , y2 if ((x1 x2) (x1-x2 cx)) || ((x2 x1) (x2-x1 cx)) || ((y1 y2) (y1-y2 cy)) || ((y2 y1) (y2-y1 cy)) break } return % ph // 2 };++++++++++++++++++++++++++++++++++++++++++++++++++++; マウス下コントロールのハンドルを取得;++++++++++++++++++++++++++++++++++++++++++++++++++++ MUS_GetCtrlHwnd() { CoordMode,Mouse,Screen MouseGetPos,x,y,hwnd,ctrl,3 y += (y 0) ? 0xFFFF 0 ;マルチディスプレイ対策 2012.11.09 x += (x 0) ? 0xFFFF 0 SendMessage,0x84,0,% (y 16)|x,,ahk_id %ctrl% ;WM_NCHITTEST If (ErrorLevel = 0xFFFFFFFF) ; -1 HTTRANSPARENT MouseGetPos,,,,ctrl,2 return ctrl }
https://w.atwiki.jp/juria/pages/77.html
myShortInput.ahk @あれこれ-2007年10月参照 /* myShortInput.ahk 2007-12-02 版 カーソル位置指定と定型文位置指定挿入 ・クリップボードに url だけの場合は、はてなダイアリー・@Wiki の リンクの書式。カーソル位置ははてなの場合だけエイリアス入力位置。 クリップボード内の url の整形は Refo を使用。 (http //www.beyond-boundaries.info/) ・それ以外は定型文リストから選択後、貼り付け位置指定メニュー。 リストは migemo によるローマ字インクリメンタルサーチ。 migemo.ahk を使用(http //lukewarm.s101.xrea.com/myscripts/index.html) 必要なファイルは migemo.ahk を参照のこと。 ・リスト上では、Tab でコントロールを移動、↑↓キーでリスト移動、 Enter で決定、ESC でキャンセル。マウス操作もオッケー。 ・貼り付け位置はニーズに応じてメニューに登録 ・定型文リスト書式:短縮語 | 定型文 ・Windows 標準のショートカットキーをサポートするエディットでしか 正しく動作しない。 ToDo:定型文とクリップボード文字列の同時挿入(できないかも^^;) :エディタによって送信キーを使い分ける。 Shift + Insert(コピー) Ctrl + Delete(切り取り) Ctrl + Insert(貼り付け) */ #Persistent #SingleInstance #Include %A_ScriptDir%\migemo.ahk ; 短縮語・定型文のリストファイルを指定 abbrev = E \etc\static-abbrev.ini ; refo.exe のパスを指定 refo = D \Application\Text_Editor\util\Refo\refo.exe V = ^v C = ^C X = ^x L = {HOME} R = {End} L1 = {Left} R1 = {Right} ; マウスの下のコントロールの ClassNN を取得して変数に格納 MouseGetPos,,,,ctrl,2 ; url の取り出し path = http StringGetPos, pos, Clipboard, %path%, ; クリップボードの文字列が url で始まる場合のみ if pos = 0 { Menu, link, Add, はてな( D), hatena Menu, link, Add, @Wiki( W), wiki Menu, link, Add, ( U)そのまま, url Menu, link, Show Menu, link, Delete Return hatena active() Runwait, %refo% /RE "s/^/[/g" "s/$/ title=]/g" Send, %V%%L1% ExitApp wiki RunWait, %refo% /RE "s/^/[[ /g" "s/$/]]/g" ;RunWait, %refo% /RE "s/$/]]/g" "s/^/[[ /g" active() Send, %V% ExitApp url active() Send, %V% ExitApp } else ; url 以外は定型文選択 { GUI, Margin, 1, 1 Gui, add, Edit, vEdit gMatch w200 Gui, Add, ListView, r15 w200 -Multi Grid vAbbrevList gAbbrevList, 短縮語|定型文 Gui, -Caption +Resize ; デフォルトボタン非表示で Enter に動作割り当て Gui, Add, Button, xm+10 Hidden Default gButtonCopy, Copy ; Gui, Add, Button, x+20 Hidden gButtonCancel, Cancel MigemoOpen(A_ScriptDir "\dict\migemo-dict") Loop, read, %abbrev% { lists() } Gui, Show, , Shortinput Return } ; Edit, ListView リサイズ GuiSize width =A_GuiWidth-1 height =A_GuiHeight-22 GuiControl, Move, AbbrevList, w%width% h%height% GuiControl, Move, Edit, w%width% Return Match GuiControlGet,Ed,,Edit len = StrLen(Ed) LV_Delete() GUIControl, -Redraw, AbbrevList MigemoSet(Ed) Loop,read, %abbrev% { name = A_LoopReadLine Loop, Parse, name, "`n" { StringSplit, compi, name, | if(len 0) { ifInString, A_LoopField, %Ed% { LV_Add(" ", compi1, compi2) } else if(MigemoMatch(compi1) len 1) { LV_Add(" ", compi1, compi2) } } if(len = 0) lists() } } LV_Modify(1,"Select Focus") GUIControl, +Redraw, AbbrevList Return AbbrevList if A_GuiEvent = DoubleClick selection() if A_GuiEvent = ColClick ; 列見出しだったら何もしない Return ButtonCopy selection() menu Menu, pattern, Add, a カーソル位置に挿入, past Menu, pattern, Add, b 挿入後1文字左に, past_left Menu, pattern, Add, c 挿入後1文字右に, past_right Menu, pattern, Add, d 行頭に挿入, past_top ; カーソールは行末 Menu, pattern, Add, e 行末に挿入して改行, past_end Menu, pattern, Add, f 前行末に挿入, past_prev ; Menu, pattern, Add, g 改行して挿入, past_next Menu, pattern, Show Menu, pattern, Delete past active() Send, %V% ExitApp past_left active() Send, %V%%L1% ExitApp past_right active() Send, %V%%R1% ExitApp past_top active() Send, %X%%L%%V%%R% ExitApp past_end active() Send, %R%%V%`n ExitApp past_prev active() Send, %X%%L%%L1%%V%%R% ExitApp past_next active() Send, %R%`n%V% ExitApp ; ------ 関数 ----- lists() { global StringSplit, compi, A_LoopReadLine, | LV_Add(" ", compi1, compi2) LV_ModifyCol(1, "Sort Auto") ; 1列目でソート、列幅調節して表示 LV_Modify(1,"Select Focus") ; 1行目を選択状態・フォーカス } selection() { global ; 選択されている(フォーカスがある)項目番号を取得 Selected = LV_GetNext(0, "F") ; LV_GetText(OutputVar, RowNumber [, ColumnNumber]) LV_GetText(Name, Selected, 1) LV_GetText(ID, Selected, 2) Clipboard = %ID% Gosub, menu Return } active() { global WinActivate, ahk_id %ctrl% sleep, 500 } GuiEscape GuiClose ButtonCancel MigemoClose() ExitApp -
https://w.atwiki.jp/juria/pages/42.html
open_url.ahk α8 bookmark_hatena [2008-01-05] 保存ファイル名を変更可能に。 [2007-12-17] DLファイルリスト記録は保存先フォルダを2階層目まで可能に。 [2007-01-06] DLしたファイルをパスリストに記録するように。 [2006-12-30] url を追加するお気に入りリストファイルを選択・作成可能に。 open_url.ahk α8 (2007.12.17 版) juria(自分用メモ) 仕様 ■クリップボード内の文字列が url の場合 ▼拡張子によって実行するコマンドを振り分ける(対応したメニューのみ表示) 拡張子と実行するコマンド・アプリは工夫次第で ▼ダウンロード ▼パスをお気に入りリストに追加する 付加するコメントとタグをダイアログで入力 ▼ttp //、tp // の補完(completionURL.ahk 下記参照) ■url を含む文字列から url を取り出し整形、クリップボードに戻す ●書式に従って記述されたお気に入り(リンク)リストの場合 ▼クリップボードに戻した url を設定したアプリで開く ▼ダウンロード ▼ハイパーリンク・タグの生成 書式は、 タグ, URL, コメント [, 備考など] (カンマ区切り、タブ区切り) 各要素内の最初と最後のスペース、改行は取り除かれる。 AHKリファレンス, http //www.autohotkey.com/docs/commands.htm , 名前順 (タグ, コメント, URL [, 備考など] の場合は、適宜変更のこと) %new_url1%→%new_url2%、%new_url2%→%new_url3% ●( オートアンカー でコピーした)ハイパーリンクの場合 <a href="http //www.autohotkey.com/">AutoHotKey</a> ▼リストファイルを選択して追加書き込み(ページ上、リンク上) ▼リストファイルを新規作成する場合は、インプットボックスにファイル名を 入力(拡張子も) ▼選択・作成するリストファイルは同一フォルダ内に置く(置かれる)。 ▼書き込み文字列の確認 →「はい」→ リストファイル選択・作成 → 書き込み 「いいえ」でタグを追加するダイアログ表示 → 書き込み文字列の確認 →「はい」→ リストファイル選択・作成 → 書き込み 「いいえ」でキャンセル ■クリップボード内の文字列に url が含まれない場合 ▼Google、Youtube、英辞郎で検索 ◎ダウンロードには、 esDL と curl.exe または wget.exe を使用。 Principia さんの ShuffleDown.ahk を参考に(感謝)サブディレクトリも選択可に。 ( esDL では cgi? や php? で飛ばされる url をうまく取得できない場合に利用) ◎ダウンロード完了後、ダウンロードしたファイルをパスリストに記録する。 #Include DLarchiveList4.ahk 要 axpathlist.spi(パスリストを書庫にみせかけて展開する Susie プラグイン) ◎設定されていない拡張子の場合は、何も起きない。 ◎あふとサクラエディタはローカルのパス用なので、誤爆に注意。 (正規表現で正しくローカルパスかどうか判定すべきだよな。きっと。) #noTrayIcon ;#Include mbstring.ahk #EscapeChar ; シングルクオートにエスケープ文字を変更 app = D \Application LDir = E \etc ;リストファイルを置くフォルダ指定 ; クリップボードの文字列から url を取り出し、クリップボードに戻す path = tp // StringGetPos, pos_prev, Clipboard, %path%, ; 欠落文字数分(ht,h,f)+ 1 以上 ; url の前にあるタグ・コメントが区切り文字を入れて2文字以下は想定外 if pos_prev 2 If Clipboard not contains <a href ; <は半角で { url = %Clipboard% ;StringSplit, OutputArray, InputVar [, Delimiters, OmitChars, FutureUse] ; Delimiters はスペース等を入れずに列挙 StringSplit, new_url, url, ,%A_Tab%, %A_Space% n r { Menu, linklist, Add, MyWiki, MyWiki Menu, linklist, Add, HTML, HTML Menu, linklist, Add, Open, Open Menu, linklist, Show return } MyWiki Clipboard = [[%new_url1% new|%new_url2%]] return HTML Clipboard = <a href="%new_url2%">%new_url1%</a> ; <>は半角で return Open { Clipboard = %new_url2% ClipWait GoSub, OpenURL return } } ; HTMLハイパーリンクタグの場合 If Clipboard contains <a href ; <は半角で { url = %Clipboard% StringSplit, new_url, url, "" ,%A_Space%, list = %new_url5%, %new_url3% MsgBox, 4, , %list% n nリストに追加してもいい?, IfMsgBox, YES { Gosub, Append Return } IfMsgBox, NO { InputBox, Tag, , タグ名を入力, , 110,124 If ErrorLevel 0 Return list = %new_url5%, %new_url3%, %Tag% MsgBox, 4, , %list% n nリストに追加してもいい?, IfMsgBox, YES { Gosub, Append Return } IfMsgBox, No, Goto, NotAppend } } ; URL の前に、タグやコメントが無い場合 ; (ht,h,f)が欠落している場合を想定 If pos_prev = 2 { Gosub, OpenURL Return } ; URL を開く OpenURL ; クリップボード内の url の補完(ttp,tp - http) #Include completionURL.ahk ; クリップボード内の url を各要素に分解する SplitPath,new_clip,file,dir,ext,name ;;; ポップアップで表示するメニューを作成 ; 書式:Menu,分類,コマンド,表示名,ラベル ; 共通メニュー Menu, DL, Add, esDL + curl, Menu6 Menu, DL, Add, Wget, Menu13, Menu, DL, Add, NetTransport, Menu7 Menu, Main, Add, ダウンロード( D), DL Menu, Main, Add, 関連付け実行, Menu8 Menu, Main, Add, Menu, Main, Add, リストに追加, LinkList if new_clip not Contains %path% { Menu, Filer, Add, あふ右, AFX-R Menu, Filer, Add, あふ左, AFX-L Menu, Main, Add, あふ, Filer } Menu, Main, Add, ; 検索メニュー Menu, Search, Add, Google, Menu10 Menu, Search, Add, YouTube, Menu11 Menu, Search, Add, 英辞郎, Menu14 ; 拡張子フィルターメニュー ; url を実行するアプリのメニューを拡張子で振り分け if (ext="htm" or ext="html" or ext="xml" or ext="php" or ext="cgi") GoSub, htmlMenu if (ext="txt" or ext="ini") { Menu, Main, Add, sakura, Menu3 Menu, Main, Show } if (ext="gif" or ext="jpg" or ext="png" or ext="bmp") { Menu, Main, Add, picture, Menu2 Menu, Main, Add, Lynx+i_View, Menu1 Menu, Main, Show } if (ext="mpg" or ext="avi" or ext="wmv") { Menu, Main, Add, video, Menu5 Menu, Main, Show } if (ext="mp3" or ext="ogg" or ext="wma" or ext="ra" or ext="pls" or ext="mid") { Menu, Main, Add, xmplay, Menu4 Menu, Main, Add, mplayer, Menu5 Menu, Main, Add, streamrip, Menu12 Menu, Main, Show } if (ext="zip" or ext="lzh" or ext="rar" or ext="exe" or ext="tar") { Menu, Main, Add, Wget, Menu6 Menu, Main, Add, NetTransport, Menu7 Menu, Main, Show } ; url が / や php?***,cgi?*** やアンカーで終わってるとき if new_clip not contains %name% GoSub, htmlMenu if new_clip contains http,ftp { StringRight, new_url, new_clip, 5 IfNotInString, new_url, . GoSub, htmlMenu } ; 検索 if new_clip not contains %dir% { Menu, Search, Show } ; else ; { ; Menu, Main, Show ; } return htmlMenu Menu, Sub, Add, lynx, Menu1 Menu, Sub, Add, luna, Menu2 Menu, Sub, Add, xyzzy_www, Menu9 Menu, Main, Add, Browser, Sub Menu, Sub2, Add, sakura, Menu5 Menu, Main, Add, Editor, Sub2 Menu, Main, Show, return ; ハイパーリンクをお気に入りリストに追加する LinkList InputBox, Comment, , コメントを入力, , 110,124 If ErrorLevel 0 Return InputBox, Tag, , タグ名を入力, , 110,124 If ErrorLevel 0 Return list = %Comment%, %new_clip%, %Tag% MsgBox, 4, , %list% n nリストに追加してもいい?, IfMsgBox, YES { Gosub, Append Return } IfMsgBox, NO, Goto, NotAppend NotAppend MsgBox, リストに追加してません Return ;リストファイルを選択・新規作成して url を追加 Append { ;Loop, FilePattern [, IncludeFolders?, Recurse?] Loop, %LDir%\* Menu, list, Add, %A_LoopFileName%, ThisFile Menu, list, Add ;区切り線 Menu, list, Add, MakeFile, MakeFile Menu, list, Show Return MakeFile InputBox, NewFile, 新ファイル名, , , 130, 100 If ErrorLevel 0 Return ; Sleep, 500 FileAppend, %list% r n, %LDir%\%NewFile% Return ThisFile StringTrimLeft, cFile, A_ThisMenuItem, 1 FileAppend, %list% r n, %LDir%\%cFile% Return } ; 各メニューに対応する動作(起動するアプリの)設定 AFX-R Run, %app%\Filer\afx0165\AFX.EXE -s -r"%new_clip%" Return AFX-L Run, %app%\Filer\afx0165\AFX.EXE -s -l"%new_clip%" Return Menu1 EnvSet, HOME, %app%\Internet\Lynx EnvSet, Temp, %app%\Internet\Lynx Run, D \bin\ckw.exe -e %app%\Internet\Lynx\lynx.exe -image_links %new_clip% return Menu2 run, %app%\Internet\Lunascape3\Luna.exe %new_clip%, return Menu3 Run, %app%\Text_Editor\sakura\sakura.exe %new_clip%, return Menu4 ; run, %app%\AudioPlayers\foobar2000_09\foobar2000.exe /play %new_clip% Run, %app%\AudioPlayers\xmplay\xmplay.exe %new_clip% return Menu5 ; Run, %app%\VideoPlayers\MPlayer-KK\mplayer.exe %new_clip% Run, %app%\VideoPlayers\mplayer-athlon-svn-18928\mplayer.exe %new_clip%, return Menu6 Run, %app%\Launcher\esDL\esDL.exe /#e=curl %new_clip% Process, Wait, curl.exe If Errorlevel 0 Process, WaitClose, %ErrorLevel% Run, %A_ScriptDir%\DLarchiveList4.ahk return Menu7 Run, "%app%\Internet\NetTransport 2\NetTransport.exe" %new_clip%, return Menu8 Run, %new_clip% Return Menu9 Run, %app%\Text_Editor\xyzzy\xyzzycli.exe -f my-www-open-url %new_clip% Return Menu10 Run, http //www.google.com/search?hl=ja lr=lang_ja num=20 q=%new_clip% Return Menu11 Run, http //www.youtube.com/results?search_type=search_videos search_sort= relevance search_query=%new_clip% ; 表示の都合により改行、本当は一行 Return Menu12 ; 外部アプリの引数に % が必要な場合はエスケープする Run, %app%\streamripper-win32\streamripper.exe %new_clip% -a -d E \Stream %d -D %d/ %1q- %A- %T -k 1 -A ; 表示の都合により改行、本当は一行 Menu13 Run, %A_ScriptDir%\DownLoad3.ahk Process, Wait, wget.exe If Errorlevel 0 Process, WaitClose, %ErrorLevel% Run, %A_ScriptDir%\DLarchiveList4.ahk Return Menu14 Run, http //www2.alc.co.jp/ejr/index.php?word_in=%new_clip% word_in2= %u304B %u304D %u304F %u3051 %u3053 word_in3=PVawEWi72JXCKoa0Je ; 表示の都合により改行、本当は一行 Return ExitApp completionURL.ahk ; クリップボード内の url の補完(ttp,tp - http) new_clip = %Clipboard% StringLeft, new_url, new_clip, 3 IfInString, new_url, ttp { StringReplace, clipboad, clipboad, h%new_clip% new_clip = h%new_clip% } else IfInString, new_url, tp` { StringReplace, clipboad, clipboad, ht%new_clip% new_clip = ht%new_clip% } else { new_clip = %new_clip% } esDL のプログラム設定(@あれこれ-2006年11月参照) esDL.ini [exec] ;wgetでダウンロード ;ファイル名をダイアログで入力 ;起動オプション /#e=wget D \bin\wget.exe -c --referer=%L -O "%P%$K" %L ; -c --referer=%L -P %P %L ;curlでダウンロード ;ファイル名をダイアログで入力 ;起動オプション /#e=curl D \Application\Internet\curl\curl.exe -o "%P%$K" %L -v %end DLarchiveList4.ahk /* DL・保存先のパスを取得するAHK */ ; 保存先フォルダの親フォルダ pDir = D \archives ; リスト編集用エディタ editor= path\to\sakura\sakura.exe ; クリップボード内の url の置換(ttp,tp - http) #Include completionURL.ahk dURL = %new_clip% ; クリップボード内の url を各要素に分解する SplitPath,dURL,file,dir,ext,name,drive ; 保存先フォルダのリストアップ ;{ Loop, %pDir%\*, 2, 0 { Dir = %A_LoopFileName% Menu, Main, Add, %Dir%, ThisDir } Menu, Main, Add Menu, Main, Add, ( E)リストを編集, Edit Menu, Main, Show Return ThisDir ;保存先フォルダ名 ;左から一文字(ショートカットキー名)カット StringTrimLeft, cDir, A_ThisMenuItem, 1 Loop, %pDir%\%cDir%\*, 2, 0 if A_Index = 1 { sDir = %A_LoopFileName% Menu, Sub, Add, %sDir%, SubDir } Menu, Sub, Add Menu, Sub, Add, p/ %cDir%, CurentDir Menu, Sub, Show Return if A_Index = 0 Gosub, CurentDir Return CurentDir InputBox, filename, 保存ファイル名, , , 180,100,,,,,%file% If ErrorLevel 0 ExitApp ;保存先フォルダ名 ;左から三文字(p/ とショートカットキー名)カット StringTrimLeft, cDir, A_ThisMenuItem, 3 FileAppend, %pDir%\%cDir%\%filename%`r`n, archiveList.sz7 Return SubDir InputBox, filename, 保存ファイル名, , , 180,100,,,,,%file% If ErrorLevel 0 ExitApp StringTrimLeft, sDir, A_ThisMenuItem, 1 FileAppend, %pDir%\%cDir%\%sDir%\%filename%`r`n, archiveList.sz7 Return Edit Run, %editor% E \etc\archiveList.sz7 Return DownLoad3.ahk ;;; DownLoad3.ahk (2008-01-05) ; クリップボード内の url をダウンロード ; Principia さんの ShuffleDown.ahk を参考に、保存先 にサブディレクトリも ; 指定可能に改造(1階層のみ)、保存ファイル名を変更できるようにした。 ; クリップボード内の url の置換(ttp,tp - http) #Include completionURL.ahk pDir = D \archives\ ;振り分けたいディレクトリ群がある親ディレクトリ wget = wget.exe ;wgetの絶対パス wget_opt = -c --referer=%new_clip% ;wgetのオプション(-O 以外) { Loop, %pDir%*, 2, 0 { Menu, DownDir, Add, %A_LoopFileName%, ThisDir } Menu, DownDir, Add Menu, DownDir, Add, MakeDir, MakeDir_Down Menu, DownDir, Show return } ThisDir StringTrimLeft, cDir, A_ThisMenuItem, 1 Loop, %pDir%%cDir%\*, 2, 0 if A_Index = 1 { sDir = %A_LoopFileName% Menu, Sub, Add, %sDir%, SubDir } Menu, Sub, Add Menu, Sub, Add, p/ %cDir%, CurentDir Menu, Sub, Show Return if A_Index = 0 Gosub, CurentDir Return CurentDir StringTrimLeft, cDir, A_ThisMenuItem, 3 Ren() Run, %wget% %wget_opt% -O %pDir%%cDir%\%filename% %new_clip% Return SubDir StringTrimLeft, sDir, A_ThisMenuItem, 1 Ren() Run, %wget% %wget_opt% -O %pDir%%cDir%\%sDir%\%filename% %new_clip% Return MakeDir_Down InputBox, NewDir, 新規ディレクトリ名, , , 180, 100 If ErrorLevel 0 Return FileCreateDir, %pDir%%NewDir% Ren() Run, %wget% %wget_opt% -O %pDir%%NewDir%\%filename% %new_clip% Return Ren() { global SplitPath, new_clip, Name, Dir, Ext, NameNoExt, Drive InputBox, filename, 保存ファイル名, , , 180,100,,,,,%Name% If ErrorLevel 0 ExitApp } -
https://w.atwiki.jp/mousegestures/pages/26.html
概要 [#pa4f4110] 機能 [#hb18ffeb] 設定画面 [#y5f1bb57] 条件定義 [#gfbcce55] 動作割り当て [#d560ce95] 設定 [#m043bacf] 概要 AutoHotkeyのスクリプトとして作られたマウスジェスチャツール。 配布ページ http //lukewarm.s101.xrea.com/myscripts/MouseGesture.html 紹介ページ http //oshiete.new-akiba.com/archives/2007/11/_mouseg.html http //lukewarm.s101.xrea.com/myscripts/mousegesture/index.html ※※ 現在は有志による後継版が開発され(lukewarmさんも了承のこと)、Autohotkeyの ダメ文字問題や64bitOS対応がなされているMouseGestureL.ahk で何の問題もありません。 したがって、MouseGestureL.ahk の利用をおすすめします。 機能 一つのジェスチャ定義に複数のジェスチャパターンを登録可能 ジェスチャパターンはボタン押し下げ、カーソル移動(ストローク)、ボタン押し上げの任意の組み合わせで定義 ストローク認識は、4方向モードと8方向モードを用意 「第1ストローク」「縦横の後」「斜めの後」で、斜めと縦横の広さの割合を変更可能 同じ方向に十分に長く移動し続けたときに長距離ストロークとして扱う 通常では、60ピクセル以上で通常ストローク、600~800ピクセル(方向による)で長距離ストローク 設定の仕方によっては、60ピクセル単位で任意の多段階ストロークを認識可能 ボタンには左/右/中/第4/第5/ホイール上/下を使用可能 2~nボタン同時押しや、同時押し+ストロークも認識可能 単独あるいは他のボタンを押しながらのダブル~n回クリックを認識可能(要設定) 1回「のみ」と2回クリックに別の動作を割り当てることも可能 ボタンを押し下げた瞬間や、ボタンを押しながらストロークを認識した瞬間に動作を発動させることも可能 ボタンを押している間中特定の動作を繰り返させる機能 ボタン押し上げを伴わないジェスチャは、ボタンを押したまま何度でも発動可能 新規ボタン定義機能により、任意のキーをボタンとして使用可能 カスタムボタン定義モジュールにより特殊なボタンの追加も可能 画面端に接触していることをボタンとして扱う機能 各辺の全体、2分割、3分割、各角を使用可能 条件別割り当てでは、ウィンドウクラス、コントロールクラス、実行ファイル名、タイトル、任意のAutoHotkey条件式などのルールが使用可能 一つの条件定義にAND、ORで複数のルールを列挙できるほか、別の条件定義を組み込むことも可能 条件式では、ウィンドウの状態、カーソルのあった部位、カーソルの座標、キーボード状態などでの振り分けが可能 クリックしたウィンドウからクラス名や実行ファイル名などを取得する機能 よく使われる条件式をメニューから入力する機能 動作割り当てにはAutoHotkeyのスクリプトを使用可能 よく使われるスクリプトをリストから選択して入力する機能 引数の入力をダイアログで分かりやすくする機能 選択したツールバーボタンからコマンドIDを取得してWM_COMMANDメッセージ送信スクリプトを生成する機能 即座にジェスチャの認識を打ち切る動作を「下方向にドラッグ」などに割り当てて使える 設定内容をクリップボード経由でインポート・エクスポート テキストエディタでの直接編集もし易いiniファイル仕様 設定画面 設定画面は別スクリプトとなっており、設定はINI風の形式で保存される。 設定スクリプトによって、動作定義スクリプトが生成され、本体に組み込まれる。 ※画面は旧バージョンの物 条件定義 マウ筋のTarget設定に当たります。 Targetとして選べる条件は、だいたい同じ。Targetの順番を考えなくてよい分、マウ筋の設定より楽。 ターゲット MouseGesture.ahk マウ筋 実行ファイル名(exe) ○ ○ クラス名 ○ ○ コントロールid ○ ○ タイトル ○ - 他には必要に応じて Custom 値に指定したAutoHotkeyの条件式が真になるか Include 値に指定した条件定義に一致しているか 等を設定することができる。 動作割り当て 設定 MouseGesture.ahk マウ筋 本家版軌跡追加版 Ver1.03~
https://w.atwiki.jp/lockerroom/pages/15.html
/* Sample_IE.ahk */ #Persistent #include %A_ScriptDir%¥ActiveX.ahk ;初期化 ActiveX() ;オブジェクト作成 ie =CreateObject("InternetExplorer.Application") ;プロパティへの書き込み pp(ie,"Visible","true") ;メソッド呼び出し inv(ie,"Navigate","about blank") ;プロパティオブジェクトの取得 doc =gp(ie,"Document") win =gp(doc,"parentWindow") inv(doc,"write","Hello! br br ") ;イベントの割り当て ConnectObject(doc,"Document_") ConnectObject(win,"Window_") ;オブジェクト解放 Release(doc) Release(win) Release(ie) return ;イベントに割り当てられる関数 Document_onfocusin(this,prm,res){ inv(this,"write","focuse in br ") } Document_onfocusout(this,prm,res){ inv(this,"write","focuse out br ") } Window_onbeforeunload(this,prm,res){ MsgBox,閉じます SetTimer,quit,-100 } quit ExitApp --------------------------- /* sample_JScript.ahk */ #include %A_ScriptDir%¥ActiveX.ahk ActiveX() ;JScript のコードを埋め込み script= ( for(var i=5;i 0;i--){ sapi.Speak(i+","); } sapi.Speak("0!"); ) sc =CreateObject("MSScriptControl.ScriptControl.1") pp(sc,"Language","jscript") sapi =CreateObject("Sapi.SpVoice") inv(sc,"AddObject","sapi",vObj(sapi)) inv(sc,"Eval",script) --------------------------- /* sample_SpeechRecognition.ahk */ #Persistent #include *i %A_ScriptDir%¥ActiveX.ahk ActiveX() sr =CreateObject("SAPI.SpSharedRecognizer") context =inv(sr,"CreateRecoContext") grammar =inv(context,"CreateGrammar") inv(grammar,"DictationSetState",0) rules =gp(grammar,"Rules") rule =inv(rules,"Add","wordsRule",33,0) inv(rule,"Clear") init =gp(rule,"InitialState") AddWord(init,"close") AddWord(init,"yes") AddWord(init,"no") AddWord(init,"ok") AddWord(init,"cancel") inv(rules,"Commit") inv(grammar,"CmdSetRuleState","wordsRule",1) inv(rules,"Commit") ConnectObject(context,"SR_") ReleaseL(sr,context,grammar,rule,init) AddWord(pState,word){ inv(pState,"AddWordTransition",vNull(),word) } SR_Recognition(this,prm,r){ result =evArgv(prm,3) pi =gp(result,"PhraseInfo") txt =inv(pi,"GetText") if txt=yes Send,!y else if txt=no Send,!n else if txt=ok ControlClick,OK,A else if txt=cancel ControlClick,キャンセル,A else if txt=close WinClose,A Release(pi) } --------------------------- /* sample_UsingAhkCommandsFromJscript.ahk */ #include *i %A_ScriptDir%¥ActiveX.ahk ActiveX() MyClass_WinMaximize(this,prm,res,flags){ WinMaximize,% evArgv(prm,0) } MyClass_Send(this,prm,res,flags){ Send,% evArgv(prm,0) } ;JScript script= ( AutoHotkey.WinMaximize("A"); Send("abcd{Shift Down}{Left 4}{Shift Up}"); ) sc =CreateObject("MSScriptControl.ScriptControl.1") pp(sc,"Language","jscript") myobj =CreateDispatchObject("MyClass_") inv(sc,"AddObject","AutoHotkey",vObj(myobj),"true") inv(sc,"Eval",script)
https://w.atwiki.jp/tbparanoia/pages/30.html
MouseGestureL.ahkのススメ MouseGestureL.ahk フリーソフト ぴょんきち氏 2014/06/25 Ver.1.30 Pyonkichi's page 紹介:トラックボールを多機能に! メーカーが多機能モデルを提供しなくとも、自分で何とかするさ。 ボタンなんて2つで十分なんだよ。「Wheel Ball」ライクなスクロールだってできるんだよ。 負け惜しみじゃないんだからなっ。 導入方法 ヨスさんの紹介ページが秀逸。 ここではサイトの紹介に留め、補足的なものを書いておこう。 【 MouseGestureL.ahkの使い方 1 】インストールの仕方 (1)「MGLahk130.zip」をダウンロード。解凍してできたフォルダ「MouseGestureL」を好みの場所に配置。 (2)「AutoHotkey_Lw**.zip」をダウンロード。解凍して「AutoHotkey.exe」を取得。 (3)「AutoHotkey.exe」を「MouseGestureL.exe」にリネームし、フォルダ「MouseGestureL」の中に移動。 基本は上記の通り。 フォルダ「MouseGestureL」内の「Setup.vbs」をダブルクリックすれば、(2)(3)を自動で一括処理してくれる。 トライ&エラーで何度もインストールする際は「Setup.vbs」を利用するのがオススメ。 【 MouseGestureL.ahkの使い方 2 】ジェスチャー登録の仕方 インストール時点で下記サンプルが用意されている。 初心者は「RB_」以外を全て削除するのがオススメ。(自分で登録し理解を深めるため) # 削除方法は「ジェスチャー」タブで対象を選択し、左"-"ボタンを押下。 # 最後に画面下「OK」を押下し、変更内容の保存を忘れずに。 名称 ジェスチャー 操作 ターゲット コメント行 スクリプト RB_ RB_ 右 Default ;アクティブ化 IfWinNotActive... 〃 〃 〃 エクスプローラ ジェスチャーキャンセル MG_Abort() RB_LB_ RB_LB__ 右+左 Default ;ウィンドウを閉じる PostMessage, 0x0010 RB_← RB_L_ 右+← Default ;戻る Send, !{Left} RB_→ RB_R_ RB+→ Default ;進む Send, !{Right} RB_↑ RB_U_ 右+↑ Default ;先頭へジャンプ Send, ^{Home} RB_↓ RB_D_ 右+↓ Default ;最後へジャンプ Send, ^{End} RB_←↑ RB_LU_ 右+←↑ RB_←↓ RB_LD_ 右+←↓ RB_→↑ RB_RU_ 右+→↑ Default ;直前のアクティブウィンドウを復元 if (MG_Defer())... RB_→↓ RB_RD_ 右+→↓ Default ;最小化 PostMessage, 0x0112, 0xF020, 0 RB_↑← RB_UL_ 右+↑← RB_↑→ RB_UR_ 右+↑→ RB_↓← RB_DL_ 右+↓← RB_↓→ RB_DR_ 右+↓→ 【 MouseGestureL.ahkの使い方 4 】登録例(基本) ヨスさんの紹介は下記の11例。 ジェスチャー登録時、最後に必ず「ボタンをどれか一つ放す」を忘れないように。 名称 ジェスチャー 操作 ターゲット コメント行 スクリプト ショートカットキー ←(戻る) RB_L_ 右+← Default ;戻る Send, !{Left} Alt + 左矢印キー →(進む) RB_R_ RB+→ Default ;進む Send, !{Right} Alt + 右矢印キー ← →(新規タブを開く) RB_LR_ 右+←→ Default ;キー操作を発生させる Send, ^t {Ctrl} + T ↓→(タブを閉じる) RB_DR_ 右+↓→ Default ;キー操作を発生させる Send, ^w {Ctrl} + W ↓←(閉じたタブを復活) RB_DL_ 右+↓← Default ;キー操作を発生させる Send, +^t {Ctrl} + {Shift} + T ←↓(更新) RB_LD_ 右+←↓ Default ;キー操作を発生させる Send, {F5} {F5} ↓(ページの一番下へ) RB_D_ 右+↓ Default ;最後へジャンプ Send, ^{End} {End} ↑(ページの一番上へ) RB_U_ 右+↑ Default ;先頭へジャンプ Send, ^{Home} {Home} →↓(ウィンドウを最小化) RB_RD_ 右+→↓ Default ;最小化 PostMessage, 0x0112, 0xF020, 0 マウスホイールを↑(前のタブ) RB_WU_ 右+W↑ Default ;キー操作を発生させる Send, +^{Tab} {Ctrl} + {Shift} + {Tab} マウスホイールを↓(後のタブ) RB_WD_ 右+W↓ Default ;キー操作を発生させる Send, ^{Tab} {Ctrl} + {Tab} 【 MouseGestureL.ahkの使い方 3 】操作性UP 「ジェスチャーを認識してくれない」「使いにくい」と思ったら、ここに戻って快適な設定を模索してみよう。 「ジェスチャー認識処理の間隔」「通常ストローク」が特に重要。 自分はカーソル移動の少ない方が好きなので、両方ともに"6"に設定してある。 TB Paranoia 2016版ジェスチャー登録例 「MouseGestureL.ahk」の使用方法が理解できたら、自分のよく利用する機能を体系化してみよう。 「覚えやすいように」体系化するのが重要である。 下記ページに自分が使用しているジェスチャー一覧を載せておこう。 TB Paranoia 2016版ジェスチャー登録例 「Wheel Ball」系スクロールソフトの競合 「Wheel Ball」系ソフトと同時起動しているとWindowsの動作が不安定になる。 「MouseGestureL.ahk」(AutoHotKey)は、「Wheel Ball」ライクのスクロールを行うことができる。 「Wheel Ball」系ソフトは使用せず、「MouseGestureL.ahk」で一本化しよう。 MouseGestureL.ahkでスクロール Trackballworksの代替 Kensingtonの専用ソフトウェア「TrackballWorks」は、2ボタン同時押しがサポートされている。 2ボタン同時押しは、「MouseGestureL.ahk」で代替可能である。 言い換えると、「TrackballWorks」を常駐から外すことができる。 #64217 Expert Mouse 5 (USB) #64325 Expert Mouse 7 #72359 Expert Mouse Wireless Trackball 上記3モデルのデフォルト値・左上:中クリック・右上:戻るボタン・左下:左クリック・右下:右クリック 「MouseGestureL.ahkでスクロール」の登録例 名称 ジェスチャー 操作 ターゲット コメント行 スクリプト MB_X1B__ MB_X1B__ 上側2ボタンの同時押し Default RB_LB__ RB_LB__ 下側2ボタンの同時押し Default #72327 SlimBlade Trackball SlimBlade Trackballのデフォルト値・左上:中クリック・右上:戻るボタン・左下:左クリック・右下:右クリック SlimBladeの上側2ボタンはTrackballWorks起動時のみ機能する。 アンインストールすると機能割り付けが失われ、MGLからも認識できなくなる。 そのためMGLをTrackballWorksの代替とすることができない。 Links jMatsuzaki (jMatsuzaki氏) ・無料マウスジェスチャーソフトMouseGestureLが便利!! ・フリーで多機能なマウスジェスチャーソフト「MouseGestureL.ahk」のインストール手順 ・フリーで多機能なマウスジェスチャーソフト「MouseGestureL.ahk」の設定手順
https://w.atwiki.jp/juria/pages/46.html
Session.ahk # 複数のファイルパスをセッションとして保存・同時に開く # 対象ファイルはエディタで開けるもの # ファイルが別ドライブ・フォルダにあっても保存場所を意識せずに前回の続き から編集を始められるのが利点 [2007-01-05]版 Session.ahk #NoTrayIcon app = D \Application ;セッションを開くエディタ editor = %app%\Text_Editor\sakura\sakura.exe ;editor = %app%\Text_Editor\Hidemaru\Hidemaru.exe ;editor = %app%\Text_Editor\gp\GreenPad.exe ;各 runx3.txt を保存するフォルダ(セッション名)の親フォルダ pDir = %app%\tools\runx3 ;runx3.exe のパス runx3 = %pDir%\runx3.exe ;nircmd.exe のパス nircmd = D \bin\nircmd.exe ;Loop, FilePattern [, IncludeFolders?, Recurse?] Loop, %pDir%\*, 2, 0 { Menu, Sub1, Add, %A_LoopFileName%, Open Menu, Sub, Add, ( S)セッションを開く, Sub1 Menu, Sub4, Add, %A_LoopFileName%, ColseAndOpen Menu, Sub, Add, ( N)新しいセッション, Sub4 Menu, File, Add, %A_LoopFileName%, Edit Menu, Sub, Add, ( E)runx3.txtを編集, File Menu, runx3Dir, Add, ( O)開く, Sub Menu, Sub2, Add, MakeDir, MakeDir Menu, Sub2, Add, %A_LoopFileName%, ThisDir Menu, runx3Dir, Add, ( A)セッションに追加, Sub2 Menu, Sub3, Add, MakeDir, MakeDir Menu, Sub3, Add, %A_LoopFileName%, Append CloseAll Menu, runx3Dir, Add, ( C)セッションに追加して終了, Sub3 } Menu, runx3Dir, Add Menu, runx3Dir, Add, ( X)全部終了, CloseAll Menu, runx3Dir, Show Return SplitPath,editor,file,dir,ext,name,drive Edit StringTrimLeft, sFile, A_ThisMenuItem, 1 Run, %editor% %pDir%\%sFile%\runx3.txt Return Open StringTrimLeft, sDir, A_ThisMenuItem, 1 ;Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID] ;指定してた作業フォルダ内にあるrun3.txtが使用される Run, %runx3%, %pDir%\%sDir% Return ThisDir ;MenuHacker、ファイラーなどからパスを取得する ;runx3.txt が無ければ作成される StringTrimLeft, sDir, A_ThisMenuItem, 1 FileAppend, %editor% %1%`r`n, %pDir%\%sDir%\runx3.txt return MakeDir ;新規セッション(フォルダと runx3.txt)を作成 InputBox, NewDir, 新フォルダ名, , , 130, 100 If ErrorLevel 0 Return FileCreateDir, %pDir%\%NewDir% Sleep, 500 FileAppend, %editor% %1%`r`n, %pDir%\%NewDir%\runx3.txt Return Append CloseAll ;MenuHacker、ファイラーなどからパスを取得する ;runx3.txt が無ければ作成される StringTrimLeft, sDir, A_ThisMenuItem, 1 FileAppend, %editor% %1%`r`n, %pDir%\%sDir%\runx3.txt Sleep, 300 Gosub,CloseAll Return ColseAndOpen Gosub,CloseAll WinWaitClose, ahk_pid %file% Gosub, Open Return CloseAll ;プロセスを終了 Run,%nircmd% killprocess %editor% Return ExitApp -
https://w.atwiki.jp/eamat/pages/32.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 ;---------------------------------------------------------------------------;; ホイールリダイレクト スクロール制御; ・加速対応; ・Word / Excel / VBE / 秀丸等の分割ペインも互換スクロールで操作可能;; 単体 / 組込み両対応 2008/05/25 (AutoHotkey_L 1.1.24.00);; 組込み時; #Include WheelScroll.ahk; Gosub,WheelInit ;初期化 AutoExecuteセクションに記述;---------------------------------------------------------------------------; 2009.06.12 マルチディスプレイ対策 (Thanks IKKIさん); 2009.07.22 秀丸v8 対応; IKKI氏の WheelAccel.ahk の加速モードを入れ込み; Excelスクロール時の処理をSendからControlSendに変更; (TrackWheelの旧バージョンから拝借); 2012.11.08 U64対応 Uint → Ptr、エンコードをUTF-8に変更; 2014.03.18 コメント修正; 2014.12.05 VISTA以降のチルトホイール(従来の互換横スクロールではなく)に対応; チルトホットキー:WheelLeft/Ritht; チルトホイールコマンド WM_MOUSEHWHEEL; 2015.07.11 コメント修正;; 2017.10.23 プチフリ対策のための調査 WM_NCHITTESTを捨てていいかどうか; チルトホイールのないマウスで疑似チルトに失敗していた問題を修正; 横スクロールの基本動作を互換SCROLL固定にするのをやめてみるテスト; 2017.11.16 win10 モダンUI対策(暫定) モダンUIはリダイレクト方法不明; 窓をアクティブにしてから Send,ホイールでOSにお任せすることにした; 2017.12.19 モダンUI対策 OS標準の「ホバーしたときに非アクティブウィンドウスクロールする」; の状態を確認するようにした; ホバー…スクロールする ON → OSにおまかせ; ホバー…スクロールする OFF → アクティブ化してからOSにおまかせ; Shift+ホイール での横スクロールホットキーを無効化; (チルトマウスの普及率的に不要だろうとコメントアウトしてしまいましたすみません); 2018.05.16 Shift+ホイール での横スクロールホットキーの復帰; Excelで分割/固定ウィンドウでスクロールできなくなっていたのを修正; 分割時 縦横共に互換モードに戻した(操作するスクロールバーを指定する必要があるため); 固定時 非表示のスクロールバーは見ないようにした; モダンUI対策 起動時に1回だけレジストリを確認するように変更; (今まではホイール回すたびに毎回見に行ってた);;+++++++++++++++++++++++++++++++++++++++++++++++++++++++; 単体起動用;+++++++++++++++++++++++++++++++++++++++++++++++++++++++#NoEnv ; 変数名を解釈するとき、環境変数を無視する#SingleInstance FORCE ; 複数プロセスで実行の禁止#WinActivateForce ; タスクバーアイコン点滅防止#HotkeyInterval 10000 ;高速スクロール対策#MaxHotkeysPerInterval 700 WheelAutoExecute SendMode Input ; 送信中にユーザー操作を後回しにする。 Gosub,WheelInit Hotkey,^ESC, WheelExit ;終了: [Ctrl]+[ESC] SetTitleMatchMode ,RegEx ;1 前方 2 中間 3 完全 RegEx 正規表現return WheelExit exitappreturn;+++++++++++++++++++++++++++++++++++++++++++++++++++++++; 単体/組込み両用;+++++++++++++++++++++++++++++++++++++++++++++++++++++++ WheelInit ;-------------------------------------------------------; 初期化;------------------------------------------------------- ;--- オプション --- DefaultScrollMode = 0 ;基本動作モード 0 WHELL 1 互換SCROLL ; IKKI氏の WheelAccel.ahk入れ込み 超暫定対応 2009.07.22 AcclMode = 0 ; 0 従来の加速モード 1 WheelAccel.ahk の加速モード ; AcclMode = 0 オプション AcclSpeed = 1 ;加速時の倍率(0で加速OFF) AcclTOut = 300 ;加速タイムアウト値(ms) ScrlCount = 1 ;互換スクロール行数 ; AcclMode = 1 オプション ; ホイール加速◆改造版 minThrottle = 2 ; 最小加速率 maxThrottle = 7 ; 最大加速率 minWheelSpeed = 5 ; 最小加速率になるホイール回転速度 (ノッチ/秒) maxWheelSpeed = 30 ; 最大加速率になるホイール回転速度 (ノッチ/秒); minThrottle = 10 ; 最小加速率; maxThrottle = 30 ; 最大加速率; minWheelSpeed = 20 ; 最小加速率になるホイール回転速度 (ノッチ/秒); maxWheelSpeed = 120 ; 最大加速率になるホイール回転速度 (ノッチ/秒) WA_Debug = false ; true にすると加速率とホイール回転速度が表示される ;ホイールで動かすコントロールのクラスリスト MouseWhellList =MozillaWindowClass MouseHWhellList =MozillaWindowClass ;互換モードで動かすコントロールのクラスリスト VScroolList = MdiClient ;MDI親 (MS-Accessなど) ,VbaWindow ;VisualBasicEditor ,_WwB ;MS-Word(編集領域全体);;;;; ,OModule ;MS-Access97 2008.05.20 ,Excel7 ;MS-Excel(2016) ウィンドウ分割時用 HScroolList = ; HM32CLIENT ;秀丸 ,Excel7 ;MS-Excel(2016) ,TLimitedScrollBox ;Leeyesのビューア部 ,SysTreeView32 ;hh.exe(chm版ヘルプビューア) ;事前アクティブ化リスト 2012.08.13 ActivateList = TscShellContainerClass ;リモートデスクトップ WinClass ;MDI事前アクティブ化リスト (アクティブ子ウィンドウのみバーがあるアプリなど) MdiActivateList = Excel7 ;MS-Excel ;--- 互換モード カスタム動作 --- ;無視リスト(バイパスして親コントロールを制御する) BypassCtlList = ScrollBar ;スクロールバー本体 , _WwG ;MS-Word分割ペイン(一つ上の_WwBで制御) , Static ;秀丸v8β 暫定 2009.07.22 ;兄弟スクロールバー スクロールバーが配下ではなく同列にあるアプリ BrotherScroolBarList = TkfInnerView.UnicodeClass ;萌ディタ ;禁止リスト:スクロールハンドルが取れない時は、互換モードを使用しない NullShwndTabooList = Excel7 ;MS-Excel(クラッシュ対策) ;---- 横スクロール カスタム動作 --- ;横スクロール除外リスト HDisavledList = TLimitedScrollBox ; Leeyesのビューア部 , TVTest Video Container ; 動画画面 (TVTest) 2014.05.01;****** win10 OS標準のリダイレクト設定の確認 2018.05.16 **** ;「ホバーしたときに非アクティブウィンドウスクロールする」 global WS_MouseWheelRouting RegRead,mwr,HKCU,Control Panel\Desktop,MouseWheelRouting WS_MouseWheelRouting = ErrorLevel|mwr 2 ? False Truereturn;==============================================; Hotkeys;==============================================; ***** win10モダンUI用#If MouseIsOverAndWheelRouting( ahk_class ApplicationFrameWindow|HH Parent ) WheelUp Send,{WheelUp} WheelDown Send,{WheelDown} WheelLeft Send,{WheelLeft} WheelRight Send,{WheelRight} MouseIsOverAndWheelRouting(WinTitle) { global WS_MouseWheelRouting MouseGetPos,,, Win Return WS_MouseWheelRouting ? WinExist(WinTitle . ahk_id . Win) 0 }#IfWinActive *WheelDown WheelRedirect() *WheelUp WheelRedirect() *WheelLeft WheelRedirect(1) ; 2014.12.05追加 *WheelRight WheelRedirect(1) ; 2014.12.05追加 ; ***** チルトが無いマウス用;Shiftホイールで横スクロール +WheelDown WheelRedirect(1) +WheelUp WheelRedirect(1) ;;X1+ホイールで横スクロール 2017.10.20 XButton1 WheelUp WheelRedirect(1,0) XButton1 WheelDown WheelRedirect(1,1) XButton1 XButton1 ;==============================================; Functions;============================================== WheelRedirect(mode=0,dir= ) ;-------------------------------------------------------------; ホイールリダイレクト; mode 0 縦スクロール 1 横スクロール (省略時 縦); dir 0 UP(LEFT) 1 DOWN(RIGHT) (省略時 ホイール準拠);------------------------------------------------------------- { global DefaultScrollMode, AcclSpeed, AcclTOut, ScrlCount ,MouseWhellList, VScroolList, MdiActivateList ,BypassCtlList, NullShwndTabooList, HDisavledList ,ActivateList, MouseHWhellList, HScroolList ,WS_MouseWheelRouting CoordMode,Mouse,Screen MouseGetPos,mx,my,hwnd,ctrl,3 WinGetClass,wcls, ahk_id %hwnd%/* SendMessage,0x84,0,% (my 16)|mx,,ahk_id %ctrl% ;WM_NCHITTEST; If (ErrorLevel = 0xFFFFFFFF); MouseGetPos,,,,ctrl,2 ;※※※ WM_NCHITTEST テスト ※※※ If (ErrorLevel = 0xFFFFFFFF) { MouseGetPos,,,,ctrl,2 tooltip,ctrlhwd error settimer WA_EraseToolTip, 10000 } ;※※※ WM_NCHITTEST テスト ※※※*/ ifEqual,ctrl,, SetEnv,ctrl,%hwnd% ;2008.05.25 WinGetClass,ccls,ahk_id %ctrl% mccls = ccls ;2009.07.22 秀丸v8β 対応 ;---- アプリ個別処理 ---- ;※仮想PC、他PCリモート制御に関しては通常のウィンドウと扱いが違うため ; 個別対処が必要かも; CoordMode,ToolTip,Screen; tooltip,%wcls%,50,50 key = RegExReplace(A_ThisHotkey, \* , ) ;Mouse without Borders 2012.08.13 ;スクロール制御はクライアントに任せる (Class名は環境で変動するかも) if (Instr(wcls, WindowsForms10.Window.8.app.0.33c0d9d ) mx==0 my==0) { Send,{%key%} return } ;docuworksズーム 2011.20.34 (暫定) if Instr(wcls, Afx 400000 b 10013 ){ if (Instr(A_ThisHotkey, Up )) ControlSend,AfxFrameOrView422,{NumpadAdd},DocuWorks else ControlSend,AfxFrameOrView422,{NumpadSub},DocuWorks return } ;Microsoft Edge (とwin10 OS の「アプリ」) 2017.11.15 if (wcls == ApplicationFrameWindow ) { if (!WS_MouseWheelRouting !WinActive( ahk_id hwnd)) ; 2018.05.16 WinActivate ,ahk_id %hwnd% Send,{%key%} return } ;---- カスタマイズ適用 ----- ;事前アクティブ化リストチェック 非アクティブウィンドウをアクティブ化 2012.08.13 if wcls in %ActivateList% { WinActivate ,ahk_class %wcls% } ;無視リストチェック:1階層上のコントロールを制御対象とする Ptr = !A_PtrSize ? UInt Ptr ifInString, BypassCtlList, %ccls% { ctrl = DllCall( GetParent ,Ptr,ctrl, Ptr) ;U64 2012.11.09 WinGetClass,ccls,ahk_id %ctrl% } ;MDI事前アクティブ化リストチェック 非アクティブ子ウィンドウをアクティブ化 if ccls in %MdiActivateList% { MdiClient = DllCall( GetParent ,Ptr,ctrl, Ptr) ;U64 2012.11.09 SendMessage, 0x229, 0,0,,ahk_id %MdiClient% ;WM_MDIGETACTIVE if (ctrl != ErrorLevel) { if(ccls = Excel7 ) ;Excelカスタム ControlClick,,ahk_id %ctrl% ; (改)MID小窓をクリックして前面にならないようにした 2009.07.22 Else PostMessage,0x222, %ctrl%,0,,ahk_id %MdiClient% } } scnt = GetScrollBarHwnd(shwnd,mx,my,ctrl,mode,mccls) ;スクロールハンドル取得 2009.07.22 ;スクロール動作指定; scmode = DefaultScrollMode 1 | mode scmode = DefaultScrollMode 1 ;横スクロールの基本動作を互換SCROLL固定にするのをやめてみるテスト 2017.10.23 ;(チルト無効ソフトが多いようならDefaultHScrollModeを作るかも? if ccls in %HDisavledList% ;横スクロール禁止 scmode = 0x10 if ccls in %MouseWhellList% ;ホイールモード scmode = 0x01 if ccls in %VScroolList% ;互換モード scmode |= 0x10 ;チルト動作指定 2014.12.05 if (mode=1 || RegExMatch(A_ThisHotkey, Wheel(Left|Right) )) { if ccls in %MouseHWhellList% ;ホイールモード(チルト) scmode = 0x10 if ccls in %HScroolList% ;互換モード(横スクロール) scmode |= 0x10 } if (!shwnd) { ;互換モード禁止リスト if ccls in %NullShwndTabooList% scmode = 0 } if (!scmode) MOUSEWHELL(ctrl,mx,my,mode,dir,AcclSpeed,AcclTOut) Else SCROLL(ctrl,mode,shwnd,dir,ScrlCount,AcclSpeed,AcclTOut) } GetScrollBarHwnd(byref shwnd, mx,my,Cntlhwnd,mode=0,mccls= ) ;----------------------------------------------------------------------------; 該当コントロールのスクロールハンドルを返す; 戻り値 指定方向のスクロールオブジェクト数; out shwnd スクロールハンドル格納先; in mx,my マウス位置; Cntlhwnd 対象コントロールのハンドル; mode 0 VSCROLL(縦) 1 HSCROLL(横); mccls マウス直下のコントロール名称;---------------------------------------------------------------------------- { global BrotherScroolBarList shwnd = 0 WinGet,lst,ControlList,ahk_id %Cntlhwnd% WinGetClass,pcls, ahk_id %Cntlhwnd% ;配下にスクロールバーなし Ptr = !A_PtrSize ? UInt Ptr ifNotInString, lst, ScrollBar { ;兄弟指定がある場合は、自分と同列のスクロールバーを探す if pcls in %BrotherScroolBarList% { Cntlhwnd = DllCall( GetParent ,Ptr,Cntlhwnd, Ptr) WinGet,lst,ControlList,ahk_id %Cntlhwnd% WinGetClass,pcls, ahk_id %Cntlhwnd% } else return 0 } ;スクロールバーコントロールの抽出 vcnt = 0 hcnt = 0 Loop,Parse,lst,`n { ifNotInstring A_LoopField , ScrollBar Continue ControlGet,vis,Visible,,%A_LoopField%,ahk_id %Cntlhwnd% ; 2018.05.16 if (!vis) Continue ControlGet,hwnd, Hwnd,,%A_LoopField%,ahk_id %Cntlhwnd% WinGetpos, sx,sy,sw,sh, ahk_id %hwnd% if (sw sh) { ;縦スクロール vcnt++ WinGetpos, vx%vcnt%,vy%vcnt%,vw%vcnt%,vh%vcnt%, ahk_id %hwnd% if (vi = ) || ((vy%vi%!=sy) ((sy my) (vy%vi% sy))||((vy%vi% my) (vy%vi% sy))) ;上下分割 || ((vx%vi%!=sx) ((sx mx) (vx%vi% sx))||((vx%vi% mx) (vx%vi% sx))) ;左右分割 { vi = vcnt if (mode = 0) { ret = vcnt shwnd = hwnd } } } if (sw sh) { ;横スクロール hcnt++ WinGetpos, hx%hcnt%,hy%hcnt%,hw%hcnt%,hh%hcnt%, ahk_id %hwnd% if (hi = ) || ((hx%hi%!=sx) ((sx mx) (hx%hi% sx))||((hx%hi% mx) (hx%hi% sx))) ;左右(Excel型) || ((hy%hi%!=sy) ((sy+sh my) (hy%hi% sy))||((hy%hi%+hh%hi% my) (hy%hi% sy))) ;上下(Word型) { hi = hcnt if (mode = 1) { ret = hcnt shwnd = hwnd } } } } ; 2009.07.22 秀丸8β1 超暫定対応 ;---アクティブペインにしかバーがないアプリ、可能ならペインを切り替える--- ;[秀丸]用 カスタム:分割ウィンドウ切り替え if (pcls= HM32CLIENT !(vy1 =my vy1+vh1 = my)) ;秀丸 v7未満 || (pcls= Hidemaru32Class mccls = Static ) ; v8β1 PostMessage, 0x111, 142, 0, ,ahk_id %Cntlhwnd% ;WM_COMMAND ;------------------------------------------------------------------------ return ret };------ PostMessage Scrool Control ------------------------------------------ MOUSEWHELL(hwnd,mx,my,mode= ,dir= , ASpeed=1,ATOut=300) ;----------------------------------------------------------------------------; WM_MOUSEWHELLによる任意コントロールスクロール; hwnd 該当コントロールのウィンドウハンドル; mx,my マウス位置; mode 0 縦 1 横 (2014.12.05); dir 進行方向 0 UP(Left) 1 DOWN(Right);; ASpeed 加速時の倍率(0で加速OFF); ATOut 加速タイムアウト値(ms);---------------------------------------------------------------------------- { static delta ; 2012.08.12 L向け調整 ; IKKI氏の WheelAccel.ahk入れ込み 超暫定対応 2009.07.22 global AcclMode if (AcclMode) { delta = 120 * WA_Throttle() } else { ;ホイール加速 If (A_PriorHotkey A_ThisHotkey) || (ATOut A_TimeSincePriorHotkey) || (0 = ASpeed) delta = 120 Else If (delta 1000) delta += 120 * ASpeed } ; wParam Delta(移動量) wpalam =GetKeyState( LButton ) | GetKeyState( RButton ) 1 | GetKeyState( Shift ) 2 | GetKeyState( Ctrl ) 3 | GetKeyState( MButton ) 4 | GetKeyState( XButton1 ) 5 | GetKeyState( XButton2 ) 6 ; 縦 WM_MOUSEWHELL(0x20A) 横 WM_MOUSEHWHEEL(0x20E) 2014.12.05 (2017.10.23修正) msg = mode=0||(!mode RegExMatch(A_ThisHotkey, Wheel(Up|Down) )) ? 0x20A 0x20E wpalam|= (dir=0||(!dir RegExMatch(A_ThisHotkey, Wheel(Up|Left) )) ? 1 -1) * (delta 16) ; lParam XY座標 my += (my 0) ? 0xFFFF 0 ;マルチディスプレイ対策 2009.06.12 mx += (mx 0) ? 0xFFFF 0 lpalam = (my 16) | mx ;WM_MOUSE(H)WHELL PostMessage, %msg%, %wpalam%, %lpalam%, , ahk_id %hwnd% } SCROLL(hwnd,mode=0,shwnd=0,dir= , ScrlCnt=1,ASpeed=1,ATOut=300) ;----------------------------------------------------------; WM_SCROLLによる任意コントロールスクロール; hwnd 該当コントロールのウィンドウハンドル; mode 0 VSCROLL(縦) 1 HSCROLL(横); shwnd スクロールバーのハンドル; dir 前後方向 0 SB_LINEUP/LEFT 1 SB_LINEDOWN/RIGHT;; ScrlCnt スクロール行数; ASpeed 加速時の倍率(0で加速OFF); ATOut 加速タイムアウト値(ms);---------------------------------------------------------- { static ACount ;加速 If (A_PriorHotkey A_ThisHotkey) || (ATOut A_TimeSincePriorHotkey) || (0 = ASpeed) ACount = ScrlCnt Else ACount += ScrlCnt * ASpeed ;wParam 方向 if (dir = ) { If (RegExMatch(A_ThisHotkey, Wheel(Up|Left) )) dir = 0 ;SB_LINEUP / SB_LINELEFT Else dir = 1 ;SB_LINEDOWN / SB_LINERIGHT } ;0x114 WM_HSCROLL 0x115 WM_VSCROLL msg = 0x115 - mode Loop, %ACount% PostMessage, %msg%, %dir%, %shwnd%, , ahk_id %hwnd% } WA_Throttle() { ;----------------------------------------------------------; 加速率を線形補間で計算する; minThrottle = 最小加速率; maxThrottle = 最大加速率; minWheelSpeed = 最小加速率になるホイール回転速度 (ノッチ/秒); maxWheelSpeed = 最大加速率になるホイール回転速度 (ノッチ/秒); WA_Debug = デバッグモード;---------------------------------------------------------- global minThrottle, maxThrottle, minWheelSpeed, maxWheelSpeed, WA_Debug, tooltiptext static prevspd = 0 if (A_PriorHotkey A_ThisHotkey || A_TimeSincePriorHotkey = 0) { gosub WA_EraseToolTip prevspd = 0 nextspd = 0 } else { nextspd = 1000 / A_TimeSincePriorHotkey ; 現在のホイール回転速度 (ノッチ/秒) } spd = (prevspd + nextspd) / 2 ; 直近 2 ノッチの平均回転速度 (ノッチ/秒) if (spd minWheelSpeed) { thr = 1 } else { thr = floor((spd - minWheelSpeed) * (maxThrottle - minThrottle) / (maxWheelSpeed - minWheelSpeed) + minThrottle) } if (thr maxThrottle) { thr = maxThrottle } if (WA_Debug) { tooltiptext .= x . thr . ( . round(spd, 1); tooltiptext .= = avg( . round(nextspd, 1) . + . round(prevspd, 1) . ) tooltiptext .= notch/s)`n tooltip % tooltiptext settimer WA_EraseToolTip, 10000 } prevspd = nextspd return thr } WA_EraseToolTip ;----------------------------------------------------------; ツールチップを消す;---------------------------------------------------------- tooltiptext = tooltip settimer WA_EraseToolTip, off return;----------------------------------------------------------; 参考 ホイール加速の別実装; http //f57.aaa.livedoor.jp/~atechs/index.php?plugin=attach pcmd=open file=AutoHotKey%20Thread.htm refer=Download; 538 :233:2005/05/09(月) 01 41 23 ID zU71pxGA; WheelUp ; WheelDown ; MouseGetPos,x,y,hwnd,cls; MouseGetPos,,,,cls2,1; if(cls != cls2); cls = cls2; accel = (A_PriorHotkey == A_ThisHotkey A_TimeSincePriorHotkey 80) + (A_PriorHotkey == A_ThisHotkey A_TimeSincePriorHotkey 250) + 1; wParam = 0x780000 * accel * (1 - 2 *(A_ThisHotkey = WheelDown )); lParam = x + y*0x10000; PostMessage,0x20A, %wParam%,%lParam%, %cls%, ahk_id %hwnd%; return; ホイールリダイレクト。例によって加速付き。; だいぶ短くなった。今のところMDIを含め殆ど動ようになった。; W2kSP4, AHK1.0.32.00;----------------------------------------------------------