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 以降も参照
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を割り当ててるよ。
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 00:11:10 ID:jOUXxwTe0] ctrlキー2連打でブラウザの更新に割り当てたいのですが、 ctrl::send,^r ↑ここをどう記述すればいいかご教授願います。
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 01:12:54 ID:23S/nCDd0] >>535 >>487 もう>>2-3 ぐらいに必須だなwまあ、あっても無駄かもしれんが
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 06:07:49 ID:23S/nCDd0] 下記の、表示ウィンドウのハンドルを取得する単純なスクリプトですが、 ひとつのウィンドウしか表示されてないプロセスでも二つ取得できているのは、どういう理屈なのでしょうか? さっぱりです(´・ω・`) #persistent ;ウィンドウハンドル一覧 WinGet, List, List,,,aaaaaaaaaaaaaa Loop,%List% { Hwnd := List%A_Index% WinGet, exe, ProcessName, ahk_id %Hwnd% abc .= exe . " " . Hwnd . "`n" } msgbox, %abc% return esc::reload
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 09:02:50 ID:r4Tse8HJ0] Jane(クラスがTMAainWindとTApplication)だったりしないだろうか どういう理屈っていうか、作った側の理屈でしょ
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 13:40:23 ID:23S/nCDd0] どうもです。調べたらTApplicationでした。見えてなくてもあるんだよ状態か・・・ 流行らせるページがヒット >やっかいなのがDelphi製のソフトのTApplicationというクラス名のウィンドウ。 >可視ウィンドウ扱いで、タスクバーにはこのウィンドウのタイトルが表示されるが、実際には大きさがゼロで画面には表示されない。 >VxEditorなど、TApplicationが不可視になっているものもある。
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:28:13 ID:/i446DAf0] 質問です。 Sendコマンドにてreturnと入力したいのですが、 エラーが出てしまいます。 Sendコマンド中で、returnと表現するには どうしたらよいでしょうか。
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:34:46 ID:/i446DAf0] >>540 すいません。 自己解決しました。
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:38:19 ID:CODN8xT10] 何を間違えていたのか気になる 教えて
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:42:30 ID:r4Tse8HJ0] Send, return
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 19:22:46 ID:23S/nCDd0] >>487 >IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。 こっちじゃないと正しく動かないかも。あとこれじゃ3連打したら、2回発動する? ~Ctrl:: ifNotEqual, A_PriorHotkey, %A_ThisHotkey%, return ifGreater, A_TimeSincePriorHotkey, 400, return soundplay,*-1 return 流行らせるページのほうがいいか。 ~Ctrl:: if A_TickCount < %ctrldouble% { ;some action ctrldouble=0 } else { ctrldouble=%A_TickCount% ctrldouble+=400 } return
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:30:02 ID:s6sjDdIo0] いやあ、規制長かった。 どうでもよくなったw
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:34:24 ID:r4Tse8HJ0] モールスのパクり。キーが規定時間以内に何度押されたかを返す。 キー押す・離すで1セットなので押しっぱなしで利用するキーやボタンには向かない あまり使えない KeyCount(timeout=0.3) { key := RegExReplace(A_ThisHotkey, "^[\$\^\+!#]+","","") KeyWait, %key% Loop { count++ KeyWait,%key%, D T%timeout% If ErrorLevel break KeyWait, %key% } return count } : ex) [Win]+[Space]二度(以上)押しでIME ON/一度ならOFF #Space::IME_SET(KeyCount()>1)
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:47:26 ID:r4Tse8HJ0] ちょっと変えた。 ↓みたいに回数指定でやればキャンセルも出来るしちょっと便利かもしれない ~Ctrl:: If KeyCount() = 3 MsgBox, Some Action return KeyCount(timeout=0.3) { key := RegExReplace(A_ThisHotkey, "^[\$\^\+\*!#~<>]+","","") KeyWait, %key% Loop { count++ KeyWait,%key%, D T%timeout% If ErrorLevel break KeyWait, %key% } return count }
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 06:38:33 ID:wyAVApH80] >>547 これいいね。Libフォルダ行き、決定。 ttp://lukewarm.s101.xrea.com/up/file/106.zip 俺の昨日の財産。なんちゃってホイールVol。アイディアもスクリプトもGUIも、全部パクリだけどねw 細かいところは面倒くさかったから、やってない。WheelVolとGOM使ってる人におすすめ。
549 名前:名無しさん@お腹いっぱい。 [2009/03/29(日) 10:50:37 ID:rJZ7qtHO0] >>548 実行しても何も表示されないんだが 当方vista sp1 何か設定が必要?
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 14:00:46 ID:NRu5w9hF0] ウィンドウが最大化されているか、 されていないかを取得する方法ってありますか?
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 14:29:42 ID:pOBhf47V0] WinGet, status, MinMax, hogehoge
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 15:00:23 ID:x2HXBG8DP] メニュー上の項目先頭のチェック"レ"が付いているかいないかを取得する方法ってありますか?
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 15:41:55 ID:mk90UFZl0] WinGetレ
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 15:52:41 ID:pOBhf47V0] >>552 AHKにゃ無い。 あと最近のアプリは「普通のメニュー」を使っていないのが多いよ。
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 16:20:44 ID:wyAVApH80] >>549 メモ帳で中身見てもらえばわかると思うけど、基本は無変換押してホイールくるくる。 #NoTrayIconは外したほうがいいかも。Vistaでも動くかな?わからない。動くと思うけど。
556 名前:552 mailto:sage [2009/03/29(日) 16:22:07 ID:x2HXBG8DP] >>554 そうでしたか どうもありがとうございました
557 名前:549 mailto:sage [2009/03/30(月) 00:10:07 ID:rej68raf0] >>555 おお動いたよ おもしろいねこれ
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/30(月) 03:11:37 ID:rej68raf0] imeの状態を、キーの入力ごとにチェックするのではなくて、 0.5秒ごとにチェックするには どうすればいいのでしょうか?
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/30(月) 03:27:33 ID:lQv120RA0] >>558 #persistent SetTimer, IME_GET, 500 return IME_GET: Tooltip,% IME_GET() return
560 名前:558 mailto:sage [2009/03/30(月) 07:57:20 ID:rej68raf0] >>559 ありがとうございます! 非常に助かりました!
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 13:18:36 ID:LiwDBTTE0] マウスカーソル1回転させると何かアクションを起こすみたいなサンプルスクリプトってないですかね。
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 14:34:53 ID:V9eOhI1h0] >>561 >>492
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 16:22:04 ID:DLXcLh2K0] 前から思ってたんだけどCoordModeを画面端からの絶対座標にする方法は ないですか? 画面の右側にGUIやtooltipを表示するスクリプトを作って使っているんだけど、 使うPCによって画面外にはみ出したりする。 今はPCごとに表示座標を書き換えてるんだけど そうしなくていい方法があったら教えてくれませんか。
564 名前:563 mailto:sage [2009/03/31(火) 16:24:29 ID:DLXcLh2K0] 自己レス。 WinGetPosでProgram Managerを指定してデスクトップのサイズを 取得すればいいのかな?と今気付いた。
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 17:59:07 ID:ppgb+fKo0] >>563 SysGet
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:30:14 ID:wxVKoyMy0] キーを押す長さをSetKeyDelayで設定できるようですが、 右クリックを5000ms押す場合には、どのように指定すればいいですか?
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:54:33 ID:V9eOhI1h0] SomeKey:: Send, {RButton Down} Sleep, 500 Send, {RButton Up} return ちなみにこれだと5秒経たないうちにもう一度キーを押しても反応しない
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:55:24 ID:V9eOhI1h0] あ、500msになっとる・・・
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 22:45:50 ID:wxVKoyMy0] >>567 >>568 レスありがとうございます。 アドバイスのおかげでうまくいきました
570 名前:名無しさん@お腹いっぱい。 [2009/04/01(水) 17:17:57 ID:UifZp1zf0] guiのウィンドウを動かしたら その移動後の位置を取得したいです どうすればいいのでしょうか
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 19:38:22 ID:81tLNstp0] >>548 AhkWheelVol改訂パクリ増幅完成版 WheelVolアイコンを使えるようにした。他微々変更。 ttp://lukewarm.s101.xrea.com/up/file/107.zip
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 19:52:53 ID:81tLNstp0] >>570 Process,ExistとかWinGetとかWinGetPosとか使う
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 20:11:31 ID:o8Y7i7os0] >>570 すげ〜力業。もっとスマートにできないもんかねぇ Gui, +LastFound GuiHwnd := WinExist() Gui, Show, w200 h100 WinGetPos,xx,yy,,,ahk_id %GuiHwnd% return #IfWinActive, ahk_class AutoHotkeyGUI ~LButton Up:: ~Enter Up:: WinGetPos,x,y,w,h, ahk_id %GuiHwnd% if (xx != x || yy != y) SetTimer, OnGuiMoved,-1 xx:=x,yy:=y return OnGuiMoved: Tooltip, (%x%`,%y%) SetTimer, TipOff, -2000 return TipOff: Tooltip return
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 22:28:53 ID:81tLNstp0] OnMessageでできるんじゃないかな。
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/02(木) 03:15:35 ID:dUEx8qZ/0] ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/124- 今年も嘘なの?
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/02(木) 19:29:48 ID:7vkTJaDR0] VistaでGuiをDestroyするとなぜかGuiが二度と表示できなくなってしまう・・・ XPでは動いたのに・・・
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 12:00:41 ID:THWk95Pp0] 需要あるかどうかわからないけど貼り、リモートデスクトップの背景色を透過させるスクリプト リモートデスクトップクライアント側は背景画像なしで起動、スクリプト内部の「396da5」は各自で適宜書き換えてほしい あと、同時に2つ以上のリモートデスクトップクライアントが起動する状況は一切考慮してない あまりこういうもの書いた経験ないんで、書き方がアレなのはご勘弁を --- #Persistent SetTitleMatchMode,2 SetTitleMatchMode,Fast DetectHiddenWIndows,Off SetTimer RemoteTrans,100 return RemoteTrans: IfWinExist,リモート%A_Space%デスクトップ接続 ahk_class #32770 { If(TransFlag = 0) { DetectHiddenWIndows,On TransFlag = 1 WinSet,Trans,Off,ahk_class TSSHELLWND WinSet,TransColor,396da5 255,ahk_class TSSHELLWND DetectHiddenWIndows,Off } } else { TransFlag = 0 }
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 12:06:35 ID:zJiZ72fS0] >>576 の続き VistaだとGuiをDestroyすると、そのGui番号ではGuiが表示できなくなるみたい
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 13:42:03 ID:rZJUeqT00] 単にキーバインドの変更のためだけにこのソフトを使おうと思ってるのですが、 その目的に使うだけだったらこのソフトのメリットは大してないのでしょうか
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 13:56:52 ID:xW9QnJcO0] そんなこともない だがCapsLockをどうにかしたいのなら諦めれ
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 14:13:49 ID:kSmNsRer0] changekeyと組み合わせれば、CapsLock問題もクリアーできるよ。 そして便利な使い方を考えるうちに、スクリプトにはまって、VBS、Perに手を出して、終いにはC言語の勉強を始めたのは俺。
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 14:25:10 ID:zJiZ72fS0] プログラミングの手間を省くために手を出すような奴もここにいる できる範囲が大きすぎて全部AutoHotkeyでやろうとしてしまうのがデメリットかな
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 14:34:05 ID:mA/w516g0] >>581 あ、俺ガイル
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:03:21 ID:FNUcueKP0] ほんとこのソフトすごいよね便利すぎてハマるの分かる
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:17:57 ID:hXZrj5Ty0] ちょっと便利にするコードを書くうち脱線しすぎて気づけば、 数十万件ほどある2chのDAT自動分類とか、本文検索、カテゴリわけ、統計抽出で使ってる。 ホットキーは、このメインプログラムを呼び出すための ショートカットキーとして唯一、機能している。
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:51:05 ID:YxZpHoQz0] マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。 >>581 俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。 AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:52:14 ID:YxZpHoQz0] マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。 >>581 俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。 AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:54:42 ID:YxZpHoQz0] 初の連打、すまん。失敗したって出て、リロードしても書き込まれてなかったからorz >>571 これ、リモートデスクトップ先でもとりあえず使える。Master音量しか出ないけど。
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 18:46:06 ID:YxZpHoQz0] やっぱAltTabって特殊なんだね。 ~LAlt & Tab:: KeyWait, Tab, T0.15 if Errorlevel = 0 send, {Blind}{Tab} if Errorlevel = 1 send, {Blind}+{Tab} settimer, altreturn, -1 return altreturn: keywait, LAlt send, {Return} return
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/06(月) 16:01:58 ID:Z06B8II+0] AVGがあると、Ahk2Exe.exeでコンパイル失敗するみたいね。 常駐シールドの例外設定すればいいらしい。
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 04:03:27 ID:Mds5OALU0] #Persistent ;監視 Clipboard= ;クリップボードのクリア OnClipboardChange: ;クリップボードの内容が変更されたときに実行されるラベル これなんですが、これだとクリップボードの内容が同じ場合でも (同じ文字列などを続けてコピーした場合) 実行されてしまいます。 クリップボードの内容が同じ場合は実行しないようにしたいのですができるでしょうか?
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 09:21:26 ID:tWsUW9OG0] 前のと比較すればいいだけでは
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 15:30:24 ID:TGZWu1B70] >3後半の文字化けってUTF-8でソース保存すれば回避できる?
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 16:07:21 ID:t+lMuHL/0] 文字化けではなくダメ文字、つまり正しく解釈された上での問題なのでそれでは回避出来ない
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 19:45:06 ID:CUjFaHh90] Q: ファイルパスに駄目文字があるんだが、、、 A: 駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 19:57:38 ID:sZshg2Md0] 流行らせるにある、ホイールリダイレクト使ってるんだが、ところどころホイール操作自体できなくなります。 例)タスクトレイをホイールすることができない、デュアルモニタ環境で特定のモニタのFirefoxにホイールができない など *WheelDown:: CoordMode,Mouse,Screen MouseGetPos,x,y,hwnd,ctrl,3 wp:=0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6 lp:=y<<16|x IfWinExist,ahk_id %hwnd% { SendMessage,0x84,0,%lp%,,ahk_id %ctrl% If ErrorLevel=4294967295 MouseGetPos,,,,ctrl,2 Loop,%A_EventInfo% PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl% } どこか改善できないでしょうか?