1 名前:名無しさん@お腹いっぱい。 [2008/12/31(水) 12:39:34 ID:ROX9gd900] ■公式 www.autohotkey.com/ ■解説 AutoHotkeyを流行らせるページ lukewarm.s101.xrea.com/ ■過去スレ 1 pc7.2ch.net/test/read.cgi/software/1098531338/ 2 pc7.2ch.net/test/read.cgi/software/1129836713/ 3 pc11.2ch.net/test/read.cgi/software/1157043396/ 4 pc11.2ch.net/test/read.cgi/software/1184556627/ 5 pc11.2ch.net/test/read.cgi/software/1201502896/ 6 pc11.2ch.net/test/read.cgi/software/1219130051/ 関連リンク>>2 以降も参照
463 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/16(月) 19:42:47 ID:eGMmt4nd0] ソフト名忘れたが、デバイスドライバレベルで区分けするフリーソフトがあるよ。 たしか作者は日本人
464 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/16(月) 20:51:44 ID:5g2lI0+Z0] 俺はプログラマブルキーボード使ってる。 本来はキーマクロを割り当てて使うものだが、キーマクロのメモリ登録では、 アプリ毎に動作を切り替えられず、専用のツールを利用すれば対象アプリ毎の 設定も出来るが、あまり出来が良くないので、メモリにはF13〜F24や、 普通のキーボードでは入力しづらいショートカットキーを登録し、 AutoHotkeyで引っ掛けてアプリ毎の動作に書き替えてる。
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/16(月) 21:39:38 ID:OR65f9ys0] >>463 情報ありがとう、それがみつかればできそうだ >>464 俺も最初プログラマブルキーボードか、ホットキーがいっぱいあるゲーミングキーボードとか考えたんだか 特殊なキーボードは値段が高くて選択肢も少ないので、なんとかならないかと思ったんだが プログラマブルってほどじゃなくても、全キーをWinキーあたりと同時押しができれば あとはAutoHotKeyで十分なんだけど ただWinキーを押しっぱなしで固定するだけじゃ、やっぱり2台とも連動して駄目だし ハード的に改造しようかと調べてもROMライター前提で変換基盤自作とか、素人には無理そうだし
466 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 00:59:49 ID:VkzQ2R4K0] setntptimeという時刻修正プログラムを実行後、ログの最後の4行を TrayTipかMsgBoxに表示するようにしたいのですが RunWait, C:\App\Internet\setntptime\setntptime.exe,,hide logfile = C:\App\Internet\setntptime\settimeLog.txt i = 0 Loop, read, %logfile% { i += 1 } FileReadLine, server, %logfile%, i-3 FileReadLine, oldtime, %logfile%, i-2 FileReadLine, fixtime, %logfile%, i-1 ;最終行は改行だけなので省略 MsgBox,, setntptime log, %server%`n%oldtime%`n%fixtime% return のように、2度手間になりますがログの行数を取得してからFileReadLineする 方法しか思い浮かびませんでした。 もう少しスマートにしたいんですが良い方法あったらご教授ください。
467 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 01:19:19 ID:pREBWc+h0] >>466 RunWait, C:\App\Internet\setntptime\setntptime.exe,,hide logfile = C:\App\Internet\setntptime\settimeLog.txt Loop, read, %logfile% { server=%oldtime% oldtime=%fixtime% fixtime=%dummy% dummy=%A_LoopReadLine% ;改行が入る } MsgBox,, setntptime log, %server%`n%oldtime%`n%fixtime% return こんなんじゃだめ?
468 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 01:24:58 ID:Q86YJixB0] すげぇ・・・なんというアクロバティック。これがこのスレの底力だな
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 01:50:46 ID:VkzQ2R4K0] >>467 うおー即レスありがとうございます ダミー咬まして・・・うーん頭こんがらかりそう 使わせていただきます。
470 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 13:48:31 ID:hCcdtXRQ0] >>419 遅レスですが、IKKI氏乙です。 何か年末に作って放置してたのがあったのであげてみる。 秀丸でAHK編集する人のための CompleteX 用設定 LIBフォルダの関数ライブラリを読んで単語補完辞書&ヒントを作成する。 www6.atwiki.jp/eamat/pub/MyScript/MyLibList.zip
471 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 15:39:39 ID:Lst9ESBRP] Runで引数を変数で与えたいんだが、 Run, %var1%, %var2% ってやっても作業ディレクトリがうまく与えられないみたいなんだけど 何が原因?
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 15:52:26 ID:Lst9ESBRP] ごめんなさい自己解決 制御文字が含まれてたっぽい
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 18:39:45 ID:gDeBu6wE0] よくあるw エクスプローラの引数とか特に 俺は行数増えるけど見通しよくするために↓みたくしてる dir = c:\hoge\hoge cmd = %var1%, %var2% Run, %cmd%, %dir%
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 19:02:16 ID:hImTYnxN0] >>470 乙です 一方、海の向こうではchmでいくんだろうか? GenDocs v2.0 - Create StdLib documentation easily! ttp://www.autohotkey.com/forum/topic41287.html といっても、前スレ GenDocs - utility for creating StdLib documentation ttp://www.autohotkey.com/forum/topic22548.html も含め投票数(反応)そのものも少ないみたいだし、このまま付けたり付けなかったりバラバラでいくのかな。。
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 19:03:05 ID:L7m3HeAn0] 作業ディレクトリを指定したら、実行ファイルってファイル名だけでいい気がした。 当たり前か・・・
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 21:04:07 ID:lw7F/3Qx0] >>467 これ、発想がすばらしいなぁ。 AHK以外でも使えそうなアルゴリズムだ。ありがとう
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 00:30:37 ID:2PEehZZi0] >>470 ちょうど欲しいと思ってた CompleteX 辞書ww ありがとう、使わせてもらいます。
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 09:35:49 ID:OXmG24Mg0] スクリプト内でも関数ライブラリ使ってんの忘れてたorz 秀丸でAHK編集する人のための CompleteX 用設定 ファイルパス関数群 (Path.ahk)同梱版 www6.atwiki.jp/eamat/pub/MyScript/MyLibList_200090318.zip
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 14:37:20 ID:zm0v5CvW0] みんな宜しくよノシ
480 名前:名無しさん@お腹いっぱい。 [2009/03/18(水) 19:11:42 ID:wqUWRKfJ0] atokの変換リストを表示中に autohotkeyで操作をしたいのですが atokの変換リストを表示しているかどうかを 取得する方法が分かりません。 window spyを使っても使用しているエディタの情報だけを 取得してしまっているようです どうすればいいのでしょうか
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 21:24:09 ID:xJ1I3V720] IME.ahk でいいじゃん。とおもったけどリストが出ているかどうかは分からないのね。 で、原始的だが変換リストを出してマウス直下の窓を調べるほうほうでやった Pause:: MouseGetPos,,, hwnd WinGetClass, class, ahk_id %hwnd% Tooltip, %class% return ATOK2007なので"ATOK20Cand" だった。 で、いい加減だけど、指定の窓があったら(ウィンドウハンドルが0以外なら) 変換中とすればいいんじゃないかな Pause:: Tooltip, % WinExist("ahk_class ATOK20Cand") return これが出ているとき専用のキーバインドが欲しいなら #Ifが使える、Autohotkey_Lが向いてそうだ #If WinExist("ahk_class ATOK20Cand") a:: hoge b:: hige
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 21:26:05 ID:xJ1I3V720] あ、、、#IfWinExist でいいじゃん・・・orz
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/19(木) 00:19:09 ID:DoWJYG5p0] >>481-482 おお!期待通りに動きました ありがとうございます!
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/19(木) 09:46:28 ID:iKaTZieB0] 超初歩的質問なんですがデスクトップをダブルクリックしたのを検出するのってどうやるんでしょうか OSはVISTA32SP1です
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 17:37:19 ID:oBtBrUgR0] こんにちは。わたしも質問です。 テンキーをマクロ用のホットキーとして使用してるのですが、 NumLockキーを押すと、「NumLock On&AHK Suspend」 もう一度押すと、「NumLock Off&AHK 再開」 このトグル動作をさせたいのですが、どのように記述すればいいのでしょうか。 よろしくおねがいします。
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 17:53:19 ID:Ie0QoNxm0] SuspendじゃなくてPauseな気もする
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 18:03:04 ID:Ie0QoNxm0] >>484 カーソル下をahk_class Progmanか否かで判別し、あとは下記を参考でできるかな? ~CTRL:: if A_PriorHotkey <> %A_ThisHotkey%, return if A_TimeSincePriorHotkey > 400, return ;some action return
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 18:11:28 ID:Ie0QoNxm0] ああ、だめだ。あと下記も参考に 670 名前:665[sage] 投稿日:2008/06/06(金) 19:45:37 ID:89UJiJcz0 >>669 うあそういうことか >>667 自レスも含みますが>666であったファイルの選択の状態を取得する他の方法を探したところ ControlGetが使えそうなのでそれでやってみたテスト ~LButton:: MouseGetPos,MouseX,MouseY,WindowID,ClassNN,1 ; カーソル下の情報を取得(ClassNN以下いらないような WinGet,DesktopID,,ahk_class Progman ; デスクトップのウィンドウIDを取得 ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる If(A_TimeSincePriorHotkey<300 && DesktopID==WindowID && StateListView=="") ; デスクトップ上である&選択項目がない Send,!{Numpad1} return アイコンのないところでダブルクリックをしたとき、イベントを乗っ取らないダブルクリックなので、 丁度よく最初のクリックの時点でデスクトップがアクティブになって選択状態が外れる 同じ方法でエクスプローラ・Openダイアログ等の余白をダブルクリックで上階層移動もできる 選択項目を利用するので MButton:: 等では途中に左クリック入れるとかしないとそのままではできない・・
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 18:41:45 ID:oBtBrUgR0] >>486 レスありがとうございます。 ~NumLock::pause でできました^^
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 20:49:30 ID:q1D8qFby0] へ〜、UpperDirOneみたいなのが楽につくれるなぁ・・・と思ったけど ~LButtonでフォルダ移動の場合、項目がとれる前に移動が完了ちゃって フォルダに移動した後にBackspace送っちゃって元通り・・・で意図したとおりに動かない 結局 ~ なしになったけどうまくいかんもんだねぇ SetTitleMatchMode, RegEx #IfWinActive, ahk_class CabinetWClass|ExplorerWClass LButton:: if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) { MouseGetPos,,,,classNN ControlGet, selected,List,Selected, SysListView321, A Send, % (classNN=="SysListView321" && !selected) ? "{BackSpace}" : "{LButton}" } else { Send, {LButton Down} KeyWait, LButton Send, {LButton Up} } return
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 20:54:15 ID:w27aWi9q0] >>488 ,489 ありがとう! 月曜まで家に帰れないから試せないけど、帰ったらやってみる!
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:19:19 ID:JP2qPQY00] 某スレで盛り上がってたので書いてみました。 カーソルをくるくる回すとスクロールします。 ttp://lukewarm.s101.xrea.com/up/file/105.zip
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:26:44 ID:g8LL/GxK0] >>492 どうやってAHKで再現しようか考えていたら・・・ ありがたく頂きます
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:28:23 ID:ft3ZieEm0] これは面白いw タッチパットのノートパソコンだとうまく利用できそう。
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:45:49 ID:daHpkZkf0] おお、すんばらし。 組み込むと色々応用が効きそうだ。
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 01:16:17 ID:e7LMny/o0] autohotkey.ini に includeで #Include kurukuruscroll.ahk と書いて使わせてもらったんだけど、includeする位置によって使えたり 使えなかったりするのはなんでだろう。 マニュアルのどこを読めばいいのか教えて欲しい。
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 05:54:27 ID:enEmkL2t0] >>492 一つに纏められて助かりました 認識率と反応も完璧だね
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 07:41:19 ID:QvNRDM9W0] >>496 ttp://lukewarm.s101.xrea.com/Scripts.html ここの一番下auto-executeですね。 ホットキーが書いてあるとこより前に組み込みます。 変数が重複しないよう気をつけましょう。
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 08:45:00 ID:e7LMny/o0] >>498 ありがとう!!! 各includeファイルのauto-executeセクションをautohotkey.iniのauto-executeセクションに移動したらうまく動いたー。 今までauto-executeセクションって知らなかった^^; *.ahkを includeするときって autohotkey.ini ------------------- AAA.ahkの auto-executeセクション BBB.ahkの auto-executeセクション return #Include AAA.ahk #Include BBB.ahk ;ホットキー定義開始 -------------------
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:41:42 ID:mEL9l3Hw0] ダブルクリック検出の件だが、何とかなったので張ってみる。コードのインデントに全角空白使ってるので注意。 ; IsDoubleClicked関数 ; ダブルクリックを判定する関数、L,R,M,X1,X2の各ボタンに対応 ; システムからダブルクリック時間、範囲を取得して判定、AutoHotkey_Lの#ifでの使用を想定 IsDoubleClicked(){ Static dcTime=0,LastTime,tx,ty,LastMouseKey=0,lx=-256,ly=-256,lr=0 if(!dcTime){ dcTime:=DllCall("GetDoubleClickTime") SysGet,tx,36 SysGet,ty,37 LastTime:=A_TickCount-dcTime*2 } if(A_TickCount=LastTime) Return lr NowMouseKey:=(GetKeyState("LButton","P") | GetKeyState("RButton","P")<<1 | GetKeyState("MButton","P")<<2 | GetKeyState("XButton1","P")<<3 | GetKeyState("XButton2","P")<<4) VarSetCapacity(Point,8) DllCall("GetCursorPos","uint",&point) if((LastMouseKey!=NowMouseKey)||((A_TickCount-LastTime)>dcTime) ||(abs((NumGet(Point,0)-lx))>tx)||(abs((NumGet(Point,4)-ly))>ty)){ lx:=NumGet(Point,0),ly:=NumGet(Point,4) LastTime:=A_TickCount,LastMouseKey:=NowMouseKey Return lr:=0 } else{ LastTime:=A_TickCount-dcTime Return lr:=1 } }
501 名前:500 mailto:sage [2009/03/21(土) 09:42:42 ID:mEL9l3Hw0] ; Lv_HitTest関数 ; リストビューでアイテム上にマウスがある時に種類を返す ; そもそもリストビュー上でない場合は何も返さず、 ; アイテム上にない場合は0を返す ; 参考:流行らせるページの MouseGesture.ahk 内 MG_LvHitTest() 関数 Lv_HitTest(){ MouseGetPos,,,hwnd,class,1 MouseGetPos,,,,chwnd,3 WinGet,pid,PID,ahk_id %hwnd% VarSetCapacity(point,8) DllCall("GetCursorPos","uint",&point) if(substr(class,1,13)=="SysListView32" || substr(class,1,9)=="TListView"){ p:=DllCall("kernel32.dll\GlobalAlloc","uint",0x40,"uint",8,"uint") NumPut(NumGet(point,0),p+0,0),NumPut(NumGet(point,4),p+0,4) DllCall("user32.dll\ScreenToClient","uint",chwnd,"uint",p) hp:=DllCall("kernel32.dll\OpenProcess","uint",0x001F0FFF,"uint",0,"uint",pid,"uint") pi:=DllCall("kernel32.dll\VirtualAllocEx","uint",hp,"uint",0,"uint",24,"uint",0x1000,"uint",0x4,"uint") DllCall("kernel32.dll\WriteProcessMemory","Int",hp,"uint",pi,"uint",p,"Int",8,"Int",0) SendMessage,0x1012,0,%pi%,,ahk_id %chwnd% DllCall("kernel32.dll\ReadProcessMemory","uint",hp,"uint",pi+8,"uintp",flag,"uint",4,"uint",0) DllCall("kernel32.dll\VirtualFreeEx", "uint",pi, "uint",0, "uint",0x8000) DllCall("psapi\CloseProcess","uint",hp) DllCall("kernel32.dll\GlobalFree","uint",p) flag:=flag & 15 return (flag<4) ? ((flag<2) ? 0 : "ItemIcon") : ((flag<8) ? "ItemLabel" : "ItemState") } }
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:43:29 ID:mEL9l3Hw0] ; IsDesktopDoubleClicked関数 ; デスクトップをダブルクリックした時にTrue IsDesktopDoubleClicked(){ Return IsMouseOverDesktop() && IsDoubleClicked() } ; IsMouseOverDesktop関数 ; マウスがデスクトップ上にある時にTrue ; bbLeanだとProgmanじゃうまくいかなかったので IsMouseOverDesktop(){ MouseGetPos,,,hwnd Return (hwnd==DllCall("GetDesktopWindow") ||hwnd==WinExist("ahk_class Progman")) }
503 名前:500 mailto:sage [2009/03/21(土) 09:44:06 ID:mEL9l3Hw0] ; 使い方 #ifじゃなくても何とかなるが、ダブルクリックじゃなかった時に ; 通常のクリックをするべきなので AutoHotkey_Lの#ifを推奨 #if IsDoubleClicked() && (WinActive("ahk_class CabinetWClass") || WinActive("ahk_class ExploreWClass")) && Lv_HitTest()==0 LButton::Send,{BS} #if IsDesktopDoubleClicked() LButton::Msgbox,デスクトップがダブルクリックされた #if 以上、長くなった&見にくくてすまんがこんな感じでできた。
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:50:33 ID:mEL9l3Hw0] ; おまけ:行頭の全角スペースとTabを相互変換するスクリプト #NoEnv #EscapeChar ' Gui,Font,,MS ゴシック Gui,Add,Text,,↓ここにコードを貼り付ける Gui,Add,Edit,w640 h480 vData Gui,Add,Button,gWsToTab,行頭の全角スペースをTabに変換 Gui,Add,Button,gTabToWs x+10,行頭のTabを全角スペースに変換 Gui,Show Return GuiClose: GuiEscape: ExitApp GuiDropFiles: if(A_EventInfo<=1) FileRead,Data,%A_GuiEvent% GuiControl,Text,Data,%Data% Return WsToTab: TabToWs: Gui,Submit,NoHide Output:="",w:=(A_ThisLabel="WsToTab" ? 1 : 0) Loop,Parse,Data,% chr(10) { chr:="",t:=A_LoopField While (SubStr(t,1,(w ? 2 : 1))==(w ? " " : chr(9))) t:=SubStr(t,(w ? 3 : 2)),chr.=(w ? chr(9) : " ") Output.=chr t chr(10) } GuiControl,Text,Data,%Output% Return
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 17:16:25 ID:5yWBri8L0] 横からすみません。 ググったらあんまりヒットしなかったので、以前貼られていた DoubleKey関数紹介しておきますね。 出展:www.donationcoder.com/Forums/bb/index.php?topic=5926.msg41894 DoubleKey(RunCommand, timeout){ if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout) Run, %RunCommand% } return ~LButton up::DoubleKey("hoge.ahk", 400) みたいに各ボタンごとに処理を書いたahkファイル(ここでは同ディレクトリ内のhoge.ahk) を別途用意する必要はありますが、これでも動作しまっする。
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 17:28:06 ID:QyANxbob0] >>492 のスクリプトを縦スクロールじゃなくて、横スクロールに するにはどうすればいいんでしょうか?
507 名前:500 mailto:sage [2009/03/21(土) 18:03:47 ID:mEL9l3Hw0] >>503 のIsDesktopDoubleClickedを修正。 こうしないとアイコンダブルクリックした時にまで発動してしまう。 IsDesktopDoubleClicked(){ Return IsMouseOverDesktop() && IsDoubleClicked() && Lv_HitTest()==0 } >>505 確かにそういう方法でも時間内に2回クリックした時に何かするってことはできるんだけど、 1回目と2回目のクリック位置が離れてる時にも発動したり、 ↑みたいにアイコンダブルクリック時にも発動しちゃったりして、 いわゆるダブルクリック系の挙動としてはちょっと弱いかなーって思って書いてみた。 あと意地でも2回目のクリックを乗っ取りたかったってのもある。 でも少しこだわりすぎたかなーとは思ってる… まぁ、自分で組み込んで使ってるし結果的には満足。 >>506 WheelUpとWheelDownってなってるところを 横スクロールできるキーに変えればいいんじゃないかな。
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:08:20 ID:H5O5lVNo0] >>505 ID:mEL9l3Hw0がどこまで厳密なモノを求めてるのかわからんのでスルーしていたのだが。 そもそも>505レベルでいいんならこんなに頑張ったりはしないと思う
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:09:14 ID:H5O5lVNo0] リロってなかった。蛇足スマソ
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:27:06 ID:HbFBHhgK0] ぶっちゃけ、あっちのフォーラム行けばいくらでもあるけどね…
511 名前:500 mailto:sage [2009/03/21(土) 18:27:27 ID:mEL9l3Hw0] >>500 の書き方だと勘違いされそうなので 一応書いておくけど、俺は>>484 ではないです。 >>490 を見て、UpperDirOneに相当する機能は 別のソフト使ってたの思い出したので、 何とかAHKだけで実現できないかなと思って、頑張ってみた。 …これこそ蛇足だったかな。
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 19:39:14 ID:5yWBri8L0] >>507 申し訳ありませんでした > 1回目と2回目のクリック位置が離れてる時にも発動したり、 > ↑みたいにアイコンダブルクリック時にも発動しちゃったりして そらそうですよね・・・深く考えずに書き込んだこと反省してROM専に戻ります。 あと IsMouseOverDesktop関数はいろいろ使えそうですね。頂きます&&乙であります。
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 20:03:23 ID:YAcqdaL20] >>461 超亀レスで失礼します。 見つけたので貼っておきますね。 試してませんが通常ののキーボードでも動作するようです。 USB接続のテンキーを、プログラマブルキーボード ttp://ioenc.net/magickeypad/
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:30:10 ID:GrExewU20] こんにちは MouseGesture2、2008/10/07版をVista SP1で使わせて貰ってます。 マウ筋の機能で「設定ホイール回転でアクティブ」という機能があるのですが (ArtTipsというソフトでは、SETTING>快適マウスホイール>快適マウスホイールを使用する>フォーカス移動を行う) これと同じ挙動をMouseGesture2で実現させるにはどのように記述すればうまく行きますか? あと、JaneDoe Viewなど一部のソフトでWinMinimizeを使って最小化すると デスクトップ左下にタイトルバーの小さくなったものが、残って最小化されてしまいます。 これを回避する方法を教えて下さい。
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:41:41 ID:scspGd4S0] 簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に WinActivate を記述する
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:46:37 ID:T0zgn4OC0] 流行らせるページのホイールリダイレクトでもいいんじゃね
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:56:01 ID:4c0Fopck0] アクティブにしつつスクロールするなら両方
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 12:23:38 ID:GrExewU20] >>515-517 親切に即レスありがとうございます。 >簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に >WinActivate >を記述する が一番挙動が近かったのですがマウ筋とArtTipsの機能は Xplorer2などの二画面ファイラーや小ウィンドウがあるようなソフトに対しても 各ウィンドウをホイールの回転でアクティブに出来るので、このような挙動を望んでいますが 無理な場合WinActivateでアクティブにするようにしたいと思います。 しかし、この場合ホイールUp、Dnでアクティブになったあと普通にスクロールが利かなくなってしまいますよね?
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 12:46:54 ID:ZBRd96Tp0] >>490 をファイル選択ダイアログでも効くようにした 注意) 全角スペース利用、誤爆が無いとは言えない ; UpperDirOne LButton:: if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) { MouseGetPos,,,,classNN if (classNN=="SysListView321") { ControlGetText, text, SysListView321, A if (text == "FolderView") { ControlGet, selected,List,Selected, SysListView321, A if (!selected) Send, {BackSpace} } } } Send, {LButton Down} KeyWait, LButton Send, {LButton Up} return
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 17:35:30 ID:Rn9QKfmc0] MouseGesture2の設定で動作割り当てのキー操作を発生させるのパラメーターに 無変換キーの2回押しを設定したくて{無変換}{無変換}とやってみたのですが 認識してくれません。無変換キーは何で登録すれば良いでしょうか?
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 17:37:47 ID:Biaw3oNa0] >>520 ttp://lukewarm.s101.xrea.com/KeyList.html
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 18:04:15 ID:Rn9QKfmc0] >>521 ありがとうございます。そのページは見落としていました。 早速、カーソルが画面左下角に接触で1秒遅らせて無変換を2回押しがしたくて動作に if(!MG_Timer(-1000)){ Send,{vk1Dsc07B}{vk1Dsc07B} } や if(!MG_Timer(-1000)){ Send,{vk1Dsc07B} MG_Wait(100) Send,{vk1Dsc07B} } など、やってみたのですがうまく動きません。 どなたかアドバイスお願い致します。
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 23:07:53 ID:gJvAxqMw0] 動作の確認音にSoundbeepを使ってたけど、パソコン変えたらビープが鳴らないw
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 09:06:05 ID:Y2hrPoG60] とりあえず転載、ID:GrExewU20 と ID:Rn9QKfmc0 はモリタポ用意して制作者の教えを乞え lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/123 > 123 名前:管理人 ★[] 投稿日:2009/03/23(月) 06:07:20 > 2chのAutoHotkeyスレにMouseGesture.ahkの質問が書かれていたのに、DION規制で書き込めなくて困る。 > 誰か親切な人があと555モリタポほど恵んでくれれば、p2で書き込めるのだが。 > find.2ch.net/moritapo/give.php?RK=93127982ff852cf03449c204be39fc07&AM=&CM= エノユ、「、熙ャ、ネ、ヲ、エ、カ、、、゙ しかしDION規制まじむかつく、Viewは何故か24時間以上起動させっぱだと●ログイン無効になるので いちいち再起動させなくちゃいけなくて面倒だ
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 09:53:24 ID:Edo9xp5W0] >>3 のとおりに、CapsLockをF13〜F24に割り当てようと思うんだけど、 Change Keyってどうやってこれ割り当てるの?? 似たようなレジストリ変更タイプのキーチェンジソフトいくつか探してみたが、 どれもF12までしか割り当てられないっぽい・・・
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:36:14 ID:WUKQO+dS0] >>522 Send,{vk1Dsc07B}{vk1Dsc07B} → Send,{vk1Dsc07B 2} MG_Wait(100) → Sleep,100 >>518 Jane Doe Style は「ウィンドウ(W)」→「最小化(M)」 があるのでそれを実行させればいいんじゃない? Send,!w Send,m それかJane Doe Styleのショートカットキーのカスタマイズで 最小化にキーを割り当ててそれをSendするとか。 アクティブにしてスクロールは アクティブした後にWheelUp(Down)を送ればいいじゃない。 あと、コンボボックスをアクティブにしようとすると コンボボックスが消えるのでアクティブにしないようにしとけば 概ね支障なく動くはず。
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:36:56 ID:WUKQO+dS0] << >>526 の続き >> ;WU_ の Default に↓の2行を追記する。 gosub, CursorUnderActivate Send,{WheelUp} ;WD_ の Default に↓を2行を追記する。 gosub, CursorUnderActivate Send,{WheelDown} ;MG_User.ahk をテキストエディタで開き、以下を「サブルーチン定義」内にコピペ ;マウスカーソル下をアクティブにする関数 CursorUnderActivate: MouseGetPos,,, m_id, m_control WinGetClass, m_class, ahk_id %m_id% ;マウスカーソル下がコンボボックス(ドロップダウンリスト)ならreturn If(RegExMatch(m_control, "ComboLBox\d+")) return ;マウスカーソル下が非アクティブならアクティブ化 IfWinNotActive, ahk_id %m_id% { SetWinDelay,-1 WinActivate SetWinDelay,100 } return ;これで支障が出るなら>>517 の方法がいいと思う。
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:39:05 ID:WUKQO+dS0] あ、ウィンドウクラスは必要ないので↓は要らないや・・・ WinGetClass, m_class, ahk_id %m_id%
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:40:24 ID:WUKQO+dS0] ×;マウスカーソル下をアクティブにする関数 ○;マウスカーソル下をアクティブにするサブルーチン
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 13:54:01 ID:1ZxaOcnN0] >>525 K SC Type Up/Dn Elapsed Key ------------------------------------------------ 7C 064 i u 0.04 F13 7D 065 i u 0.04 F14 7E 066 i u 0.04 F15 7F 067 i u 0.04 F16 80 068 i u 0.04 F17 81 069 i u 0.04 F18 82 06A i u 0.04 F19 83 06B i u 0.04 F20 84 06C i u 0.04 F21 85 06D i u 0.04 F22 86 06E i u 0.04 F23 87 076 i u 0.04 F24
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/24(火) 23:15:50 ID:mXwaygr80] 多重起動を検知したくて以下のようにしたんだけど、 除外タイトルって効いて無い それともPIDとかでの除外は無理なのかな #SingleInstance, OFF Process, Exist myPid:=ErrorLevel DetectHiddenWindows,On IfWinExist, %A_ScriptFullpath% ahk_class AutoHotkey,,ahk_pid %myPid% MsgBox, あり Else MsgBox, なし
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 01:46:19 ID:zeEEOJ2T0] >>531 >>144 ,147,153 前々スレに多重起動検知で終了とかはあったよ。 タイトルが一緒でPIDが違うならで、判別してた。 一部だけ引用 ;自分の情報を取得 DetectHiddenWindows, On Process,Exist pid:=ErrorLevel WinGetTitle, g_scriptTitle, ahk_pid %pid% WinGet, hwnd, id, ahk_pid %pid% ahk_class AutoHotkey ;ahk_class AutoHotkeyのウィンドウを全て列挙 WinGet, ahk_id_list, list, ahk_class AutoHotkey Loop, %ahk_id_list%{ this_id:=ahk_id_list%a_index% ahk_id_list%a_index%= WinGetTitle, this_title, ahk_id %this_id% if(g_scriptTitle==this_title && hwnd!=this_id){ ;自分以外で同じタイトルを見つけたら終了メッセージを投げる。
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 08:36:04 ID:zeEEOJ2T0] 暇だったから、作ってみた。あまりの使えなさに吹いたw #persistent CoordMode, Mouse, Screen Settimer, Expose return Expose: MouseGetPos, X, Y if (Y<1){ ;左右に並べて表示 SendMessage,0x111,405,,,ahk_class Shell_TrayWnd keywait, LButton, D KeyWait, LButton ;元に戻す SendMessage,0x111,416,,,ahk_class Shell_TrayWnd Loop { MouseGetPos, X, Y if (Y>2) break } } return
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 13:01:45 ID:UMyjgm290] >>525 俺はchangekeyでF13を割り当ててるよ。