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 以降も参照
2 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 12:41:04 ID:ROX9gd900] ■関連記事のあるサイト AutoHotkey メモ - Principia principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2 AutoHotKey - notitle.txt kan.s151.xrea.com/?AutoHotKey なまず日記 www.tierra.ne.jp/~aki/diary/ eamatの日記 d.hatena.ne.jp/eamat/ おばけ日記 d.hatena.ne.jp/obake/ 1 Hour Software by Skrommel - DonationCoder.com www.donationcoder.com/Software/Skrommel/ ACConsole www.autohotkey.com/forum/topic7831.html Tips N Tricks(公式フォーラムのトピック) www.autohotkey.com/forum/topic8795.html&highlight=gui
3 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 12:41:35 ID:ROX9gd900] FAQ Q:CapsLock(英数)キーの割り当てがうまくいかないよ A:日本語環境だとLock系キーの動作は不定。 OS側がキーUp/Down情報が正しく返してこないので対処のしようがない。 OSのローカライズ段階で発生してる問題なので、窓使いの憂鬱やChange Keyのように ドライバレベルで弄らないとダメだが英語圏では問題ないらしいので今後のサポートもあまり期待できない。 対処としては前述のソフトで、CapsLock(英数)キーを別のキー(F13〜F24など)に割り当ててから AHKで利用すべし。 Q:「〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ A:これらの文字の2バイト目が、AHKのエスケープ文字である0x60[`]なため。 対処としてはこれらの文字の"直後"に「`」を記述する(例:「線形`代数」)か、 #EscapeCharでエスケープ文字を別のものに変えるべし。
4 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 12:42:53 ID:ROX9gd900] Q:Shift, Ctrl, Alt, Winキー以外のキーを修飾キーとしてキー割り当てしたいよ (例:無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたいよ)など A:Remap機能は記述が簡単になる反面、細かい指定がしにくい。 流行らせるページのHotkeys, キーリスト, リファレンス→Send, #IfWinActive, GetKeyState()なども参照すること。 なお、例の場合は以下のように記述する。 sc07B & I:: Send, {Blind}{Up} sc07B & K:: Send, {Blind}{Down} sc07B & J:: Send, {Blind}{Left} sc07B & L:: Send, {Blind}{Right} ※ いくつかのエディタについてははキーワード定義が以下に添付されているので参考に。 {AutoHotkeyのインストールフォルダ}\Extras\Editor
5 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 13:01:29 ID:ROX9gd900] 勝手に追加FAQ? Q: GUI作るのめんどくせ〜〜 A: 公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使え Q: ファイルパスに駄目文字があるんだが、、、 A: 駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。 Q: 「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による) A: 多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」 先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」 Q: AHKってマルチスレッドじゃないの? A: 「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。 > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。 > → 実行中、 …: 割り込み終了待ち > 元スレッド →→→→→→→→→→→……………………………………→→→→ > ★割込 ↑再開 > 割り込みスレ →→→→…………→→→→→→END > ◆割込 ↑再開 > 更に割り込み →→→END
6 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 13:48:04 ID:nnSK+Aaz0] Q: 完璧なスクリプトなのに、なぜerrorが出るの? A: (文頭に)全角スペースを使ってませんか?目に見えないものもあります。 Q: 作りたいんですけど?どうすればいいのでしょうか?ご教示頂きたいです。よろしくお願いします。 A: ご勝手に。簡単ですから(メモ帳等を使い)自分で書いてください。 ここの住人は親切ですが、それはある程度努力してきたからです。 主人でも客人でもなく、努力も見えない貴方の命令には従えません。 Q: それでも作りたいんですけど? A: 題材によっては、期待以上のスクリプトが出現する可能性もあります。
7 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/31(水) 14:11:09 ID:nnSK+Aaz0] Q: 具体的に何が出来ますか?どこにありますか? A: マウスジェスチャ、ThumbRemap、TTBaseプラグインの数種、仮想デスクトップ等 1: 「AutoHotkeyを流行らせるページ」の「My Scripts」や「BBS」の投稿スレ 2: 公式のWiki「Compilations」
8 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 11:43:21 ID:3YMBcArZ0] AかつB、かつ更にCまたはD。の時のif文はどう書きますか? if A && B if C or D という風に書いているけど、1文で書けたらスマートだと思うんだけど。
9 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 16:30:57 ID:dpIHoV0B0] if (a && b) && (c || d)
10 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:14:38 ID:dpIHoV0B0] 新春 Mini Tips ■ ヒアドキュメント 文字列をメタキャラ(`t や `n など)を用いずに定義できる ※ 必ず行頭に ( ) が無ければならない。 ; = 演算子での文字列代入。かなり楽ちん。%hoge% とすれば変数参照も出来る。 str1 = ( aaa = %aaa% bbb = %bbb% ) ; := 演算子でも利用できる str2 := " ( aaa = " . aa . " bbb = " . bb . " )" ;変態的な利用方法 MsgBox, % " ( ああ = " aa " いい = " bb " うう = " cc " )"
11 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:19:37 ID:dpIHoV0B0] ■簡易オンスクリーンディスプレイ(OSD)関数 ・・・ 全角スペースを Tab に変えること! OSD_Msg(title, msg, dur, pos="BL", fc="Aqua", fs1=28, fs2=36) { global Progress2 ; タイマで呼ぶラベルは static 変数は見えないので static _fs1,_fs2,_fc,_pos if (pos != _pos || fc != _fc || f1 != _f1 || f2 != _f2) Progress2 := false if (!Progress2) { Process, Exist MyPid := ErrorLevel opt:=InStr(pos, "L") ? "C00" : "" w := A_ScreenWidth, h := fs1 + fs2 + 40 x := A_ScreenWidth - w, y := InStr(pos, "B") ? A_ScreenHeight-(h+30) : InStr(pos, "M") ? Round((A_ScreenHeight-h)/2) : 10 Progress, 2:Hide B x%x% y%y% w%w% h%h% CW000001 CT%fc% ZH0 ZW0 ZY0 ZX0 FM%fs1% FS%fs2% WM1000 WS1000 %opt%, %msg%,%title%,%A_ThisFunc% DetectHiddenWindows, On WinGet, hwnd, ID, %A_ThisFunc% ahk_class AutoHotkey2 ahk_pid %MyPid% WinSet, TransColor, 000001, ahk_id %hwnd% WinGetPos, ,,,h, ahk_id %hwnd% WinMove, ,%y%,,,ahk_id %hwnd% } Progress2 := true Progress, 2:,%A_Space%%msg%%A_Space%,%title% Progress, 2:Show _fc := fc,_fs2:=fs2,_fs1:=fs1,_pos:=pos SetTimer, OSD_Msg_Off, -%dur% return OSD_Msg_Off: Progress2 := false Progress, 2:Off return }
12 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:21:35 ID:dpIHoV0B0] ※ Progressを利用するので、GUIを消費しない。時計表示などにいいかも。 ※ 文字列以外の引数が変わると再初期化する。文字だけ変わる場合はちらつかない。 title : タイトル文字列 msg: メッセージ文字列 dur: 表示時間(ms) pos: 位置と配置(TL で Top Left、 BCで Bottom Center、右寄せは無いw) ;fc:フォント色(16進数表記でも可) fs1:タイトルの文字サイズ, fs2:メッセージの文字サイズ
13 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:24:57 ID:dpIHoV0B0] ■ サウンドデバイスの一覧を改行区切りで得る関数 waveOut/waveIn , midiOut/midiIn に対応 複数の入出力デバイスがなければ全く意味がない。 SoundDevice_GetDeviceList(media="wave", isOut=true, requireId=false) { static cbxoc:=256,delim:="`n" uDeviceID:=0 func := InStr(media, "wave") ? "wave" : InStr(media, "midi") ? "midi" : "" if (!func) return func .= isOut ? "Out" : "In" VarSetCapacity(xoc, cbxoc, 0x00) ; Xoc (WAVEOUTCAPS / MIDIOUTCAPS) Loop { result := DllCall("winmm.dll\" func "GetDevCapsA", UInt,uDeviceID, Int,&xoc, UInt,cbxoc, Int) if (result == 2) ; MMSYSERR_BADDEVICEID break if (result == 0) { ; MMSYSERR_NOERROR devName:="" list .= StructGetString(xoc, 8) ; WAVEOUTCAPS と MIDIOUTCAPSのデバイス名称までは構造が同じ . (requireId ? ("`t" uDeviceID) : "") . delim } uDeviceID++ } StringTrimRight, list, list, % StrLen(delim) return list }
14 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:27:03 ID:dpIHoV0B0] ■ WaveOutを指定のデバイスIDで変更する >>13 と組み合わせて使う。 SoundDevice_SetWaveDeviceId(id) { static WAVE_MAPPER:=-1, MMSYSERR_NOERROR:=0 dwPreferedID:=0, dwUsePreferedOnly:=0 if (MMSYSERR_NOERROR == DllCall("winmm.dll\waveOutMessage", UInt,WAVE_MAPPER, UInt,0x2015, UInt,&dwPreferedID, UInt,&dwUsePreferedOnly, Int)) { ret := DllCall("winmm.dll\waveOutMessage", UInt,WAVE_MAPPER, UInt,0x2016, Uint,id, dwUsePreferedOnly, Int) return true } return false }
15 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:31:07 ID:dpIHoV0B0] ■ 現在選択されているWave再生デバイス名を取得する SoundDevice_GetDeviceName() { RegRead, Playback, HKEY_CURRENT_USER, Software\Microsoft\Multimedia\Sound Mapper, Playback return Playback } ■ 名前でWave再生デバイスを指定する (>>13-14 と組み合わせで使う) SoundDevice_SetDeviceName(deviceName) { deviceList := SoundDevice_GetDeviceList("wave", true, true) Loop, PARSE, deviceList, `n { StringSplit, data, A_LoopField, %A_Tab% if (data1 == deviceName) return SoundDevice_SetWaveDeviceId(data2) } } ■ 再生デバイスのトグルをする。上のものと組み合わせて使う。 戻り値に変更後のデバイス名を返す SoundDevice_ToggleDevice() { currentDeviceName := SoundDevice_GetDeviceName() deviceList := SoundDevice_GetDeviceList() StringSplit, device, deviceList, `n deviceCount:=device0, currentId:=0, nextId:=1 Loop, %deviceCount% if (device%A_Index% == currentDeviceName) currentId := A_Index else if (currentId && A_Index == (currentId + 1)) nextId := A_Index SoundDevice_SetDeviceName(device%nextId%) return device%nextId% }
16 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 17:57:57 ID:YhIzrby/0] >>10-15 新春早々為になるテク乙です
17 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 20:00:09 ID:3YMBcArZ0] >>9 d。考えてみたらそりゃそうかorz 小中学生レベルだw
18 名前:13 mailto:sage [2009/01/02(金) 20:30:59 ID:dpIHoV0B0] >>13 で使う関数が抜けていた orz StructGetString(ByRef pSrc, offset=0) { Loop 0xffff { char := NumGet(pSrc, offset, "Char") offset++ if (!char) break buff.=Chr(char) } return buff }
19 名前:13 mailto:sage [2009/01/02(金) 20:35:02 ID:dpIHoV0B0] 連投w ■ あいている GUI 番号を探す。 asc=true:昇順(1から探す) / false: 降順(99から探す) まぁあんまり使わないけど、色々GUI作っている人はどうぞ GuiFindFreeNo(asc=true) { Loop, 99 { guiNo := asc ? A_Index : 100 - A_Index Gui, %guiNo%:+LastFoundExist if (!WinExist()) return guiNo } }
20 名前:13 mailto:sage [2009/01/02(金) 20:44:24 ID:dpIHoV0B0] ■ 無理やり GUI で InputBox。(一応....モーダル) MsgBox, % GuiInputBox("いんぷっとボックス", "何か入れてよ") exitApp GuiInputBox(title, message, defaultValue="") { DialogString := "" len := StrLen(defaultValue) len := (len < 400) ? 400 : len Gui, 99:default Gui, +ToolWindow Gui, Add, Text, , %message% Gui, Font, s12, MS Gothic Gui, Add, Edit, -Multi w%len%, %defaultValue% Gui, Add, Button, defaultValueault g99GuiClose, OK Gui, 99:Show,, %title% WinWaitClose, %title% return DialogString 99GuiClose: Gui, 99:default GuiControlGet, DialogString, ,Edit1 Gui, Destroy return 99GuiEscape: Gui, Destroy return "" }
21 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 20:49:49 ID:QykMUcBv0] せっかくのところ申し訳ないが、ニーズがあるのか微妙な内容は、 自分のブログかなんかでやってくれないか
22 名前:13 mailto:sage [2009/01/02(金) 20:51:04 ID:dpIHoV0B0] ■ 指定時間(ms単位)だけツールチップを表示する #Persistent AutoHideTooltip("このツールチップは5秒で消えます", 5000) AutoHideTooltip(msg, dur,x="",y="") { Tooltip, %msg%,%x%,%y%,20 SetTimer, AutoHideTooltip_HideTip,-%dur% return AutoHideTooltip_HideTip: Tooltip,,,,20 return }
23 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 20:55:16 ID:dpIHoV0B0] わりぃ
24 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/02(金) 21:43:40 ID:ydcUNeZl0] いや、もっとやって
25 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 03:02:16 ID:dU2pkIlN0] F1:: hogehoge sleep,5000 return F1:: hogehoge2 sleep,10000 return と指定して f1のsleepの間はf2を押しても無視するようにしたいです。 変数使ってifでreturnさせれば良いかなと思っていたのですが>>5 をみるとf2を押すごとに割り込みが発生するみたいなのですが よい方法はないですか? さらに指定したキー以外の場合は押されたキーをsendしてsleep,3000するようにしたいのですが全キー分部書かないとできないでしょうか?
26 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 03:06:05 ID:dU2pkIlN0] ああう F1:: hogehoge sleep,5000 return F2:: hogehoge2 sleep,10000 return です。
27 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 10:45:42 ID:sv6+rPm90] > f1のsleepの間はf2を押しても無視するようにしたいです タイマーかな F1:: if (Key_F1_NG) return Tooltip, HogeHoge1 Key_F1_NG:=true, Key_F2_NG:=true SetTimer, Key_F1_Enable, -5000 SetTimer, Key_F2_Enable, -5000 return F2:: if (Key_F2_NG) return Tooltip, HogeHoge2 Key_F2_NG:=true SetTimer, Key_F2_Enable, -10000 return Key_F1_Enable: Key_F2_Enable: RegExMatch(A_ThisLabel, "Key_(\w+)_Enable", $) Key_%$1%_NG= return
28 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 10:46:19 ID:sv6+rPm90] > 指定したキー以外の場合は押されたキーをsendしてsleep,3000するようにしたい 面倒なら,、 Hotkey コマンドかな Keys = a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9 Loop, PARSE, Keys, `, Hotkey, *%A_LoopField%, SendAndSleep return SendAndSleep: Send, % "{Blind}{" RegExReplace(A_ThisHotkey, "^\W","") "}" Sleep, 3000 return
29 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 14:26:47 ID:CYbS+lGc0] #y::WinActivate, Untitled - Notepad と定義している場合に Win+Yを押そうとして、 Winキーを押してYを押す前に気が変わって、 Winキーを放すとスタートメニューが表示されます。 これが鬱陶しいので表示されないようにして、 スタートメニューを開くには Win+A を使うようにはできるでしょうか?
30 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 14:29:16 ID:Wek1X/3L0] >>29 そもそもWinキーを割り当てること自体間違ってないか?
31 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:02:04 ID:CYbS+lGc0] >>30 Ctrl, Shift, Alt はアプリごとのショートカットと被る可能性があるので、 アプリによらないグローバルなホットキーには Winキーを使いたいと思ってるんですが、間違ってるんでしょうか? とすると修飾シンボルの # の存在意義は何なのでしょうか?
32 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:11:50 ID:6IxvyQ1m0] winの単独押しを殺せばいいだけじゃないの?
33 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:28:57 ID:WGxALqxL0] キーカスタマイズソフトスレで >autohotkeyで不可能なことをkeybatでとりあえず、これを具体的に言っとけ。 って有ったので質問したらで答えられないからと,こっちに誘導されました. AutoHotKeyでは,ネットワーク経由で別PCのキー操作って出来るのでしょうか? 一枚のキーボードで複数のPCを操作したいんです. 一部のキーだけ別PCに割り当てとかマクロ動かしたいので切換器では無理... コマンドスクリプトとかも見たけどネットワーク関連は見あたらず. ニッチな要望だから対応してないのかな,Vistaに移行できねぇorz
34 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:29:59 ID:CYbS+lGc0] >>32 ありがとうございます LWin:: Return #a:: Send, {LWin} でいけたみたいです
35 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 15:31:41 ID:CYbS+lGc0] >>33 synergy ってソフトあるけどダメ?
36 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 16:18:02 ID:/iPm/dkm0] synergyはあるな
37 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 16:42:31 ID:7Ih2hIx60] AutoHotkeyとXkeymacsを共存して使ってる人いる? 俺の環境だと C-s での検索がまともに動かないんだけど うまく使えてる人いない?
38 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 17:25:58 ID:wjl7GfuA0] クリップボードに <a href="www.esample.com/test.jpg " alt="test.jpg" target="_blank">test.jpg</a> という文字を入れて、 www.esample.com/test.jpg という文字だけをクリップボードに抜き出し直させる処理を書きたいんですけど 先頭の <a href=" は、StringTrimLeft命令で先頭9文字を切り抜けばいいのは分かるのですが その後 " alt=〜 以降の文字を消す処理って、どのように書けばいいでしょうか。 ( " alt=〜 以降は、その時によって文字数が変わります)
39 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 17:30:24 ID:sv6+rPm90] 正規表現
40 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 17:36:08 ID:sv6+rPm90] 正規表現を覚えるまでもないと言うのなら、 href=" の位置を探して、それ以降に初めて出現する " を探して切り出せばいい。 (InStr()関数か、 StringGetPos 使って割り出して、SubStr()関数使う)
41 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 19:21:44 ID:9kdhYRBF0] LOOP, PARSE, ClipBoard, " で回して A_LoopFieldに「http:」があったら 適当な変数に入れて抜ければいい
42 名前:38 mailto:sage [2009/01/03(土) 19:36:59 ID:wjl7GfuA0] 皆さんありがとうございます。処理一つ書くにしても、いろいろな方法があるのですね。 41さんの考え方はなかったです。 40さんの教えてくれた InStr() 関数で " の位置を取得して、StringMid関数で抜き出そうと思います。 ありがとうござました。
43 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 21:33:02 ID:E/T17g2E0] >>27-28 ありがとうございます。 助かりました。
44 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 21:52:54 ID:qEZ7p5R10] ふと思い立って、OnMessageでWM_TIMERを仕込んで、 SetTimerコマンドを使った時にどういう挙動するか調べてみた。 で、SetTimerの数、SetTimerの時間に関わらず、 最小時間のタイマー1つしか動いてないようだった(タイマーID9)。 SetTimerコマンドで1つもタイマーを作っていないと、 WM_TIMERには飛んでこない。 という感じで、AHKではタイマー管理用のタイマーを 1つだけ作って管理してるみたいだね。 5000msとか長めのタイマーしか使わない場合でも 最小時間(約10ms)でタイマーが動いてしまうから、 長めのタイマー使う場合は自前でDllCall("SetTimer") した方がいいような気がするんだけど、神経質になりすぎかな?
45 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 23:55:12 ID:1YuNBWZ60] あけましておめでとうございます〜。今年も色々と勉強させて頂きます。 ところで前スレ1000まで行きましたか? DAT誰かうpしてくれると嬉しいのですが。 970までは取得してあるんですけど、旅行中でチェックする時間がなかったもので。
46 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 00:17:55 ID:GfdFtSPf0] >>45 つ ttp://www.dotup.org/uploda/www.dotup.org0754.zip.html
47 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 00:22:37 ID:dyR0JXVY0] >>46 素早いうpありがとうございます〜。 助かりました!!
48 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 01:27:04 ID:o7CXEDIT0] TrackPoint 向けユーティリティの TrackWheelをうp。 ttp://lukewarm.s101.xrea.com/up/file/103.zip 性懲りもなく、やってます。 - レスポンス改善がメイン(レンダリングの遅いコントロールで劇的に改善) - スクロールバー抽出速度upと精度up。
49 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 02:38:24 ID:97BFjk2I0] ところで前々スレ1000まで行きましたか? DAT誰かうpしてくれると嬉しいのですが。
50 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 02:41:30 ID:XwzFKclp0] >>49 Sleep, 25200000
51 名前:33 mailto:sage [2009/01/04(日) 02:47:14 ID:/TC5+4Sb0] >>35 , 36 やっぱsynergyっすか,実は前試して上手く動かせなかった... マクロ(簡単なので良いんだけど)とか,一部のキーだけ別PC操作したいとか 微妙にやりたいことが出来ないらしかったんで,直ぐに諦めてしまった もう一度試してみます.レスありがと
52 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 05:15:57 ID:uxVSj97F0] 別PCの何をどのくらい操作したいのかでも どんなソフト使うべきか決まるよ。 vncとかsshでも済むかも知れないし。
53 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 07:31:38 ID:p6B3/HqS0] TrackWheelのreadmeが参考になりすぎて困るので、 Googleサイトとかでページを作って検索にひっかかるようにすると、 幸せになる人がもうちょっと増えると思うんだけども
54 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 09:11:37 ID:JIZG7BfL0] なんという丁寧なドキュメント・・・
55 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 10:11:15 ID:D35r6xpC0] >>49 つ ttp://www.geocities.jp/mirrorhenkan/
56 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 10:32:20 ID:1GxGvmcA0] >>51 synergyよりも最近の流行はこれ 【マウス&キーボード共有】Input Director pc11.2ch.net/test/read.cgi/software/1226727210/
57 名前:33 mailto:sage [2009/01/04(日) 12:18:27 ID:/TC5+4Sb0] >>52 MMORPGで二垢するときに,一台のキーボードで操作してます. WASDで移動QEで旋回,その他キーとCtrl,Altなどの組合せで色々な機能を 普通のキーボード部分は接続してあるPCのキー入力に使い 2nd側のPC操作用に カーソルキーを2ndPCのWASD,QEを2ndPCのDelete,PageDown テンキーの0を2ndPCのスペースバー,1〜9を2ndPCの1〜9,.を2ndPCのTABなどなど F6を押すとトグルで2ndPC側のマクロ発動(実際には3ボタン連打w)してます それだけではどうしてもまかなえないときもあるので,そのときは キーボードとマウスを全部2ndPC操作に切り替えてます. まー,KeyBatで出来ることで設定していったらこうなっちゃったんですが キーボード共有ソフトだとちょっと無理で Vistaに対応したキーカスタマイズ系だと複数PC操作出来るの無いなーと >>56 それは面白そうなので観てきます スレ違い気味なネタにレスありがとうございます
58 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 12:50:39 ID:1GxGvmcA0] えらい器用なことやってますねw ネトゲ廃人の気合の入れようは異常w
59 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 12:52:01 ID:o7CXEDIT0] >>53 乱暴につくってみた ttp://sites.google.com/site/agkh6mze/ CSS使えなくて面倒だった
60 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 14:48:48 ID:FFtevMUI0] おつー
61 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 15:38:31 ID:dyR0JXVY0] >>59 乙です 本当にすごいw参考になるです
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 16:32:52 ID:1GxGvmcA0] すげえ力作ww
63 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 02:28:31 ID:RJg40VRS0] >>48 乙 いつのまにかExcelみたいな変態ポインタも消えるようになってるし スクロールが随分となめらかになってて(・∀・)イイ!! ただ、秀丸の分割ペイン切替がなくなったのは秀使いとしては地味にクリティカルかも。 組込みで使おうとして気になった点とか ・TW.ahkの後に関数集などのahk(行頭にreturnがないもの)を Includeしようとするとエラーになる。 環境:WinXP SP2 AHK 1.0.47.06 (original) 行末ラベル TW_EOF: が原因ぽい。 行頭の if (A_LineNumber != 1)ってのは組込み用対策なのかな。 これって常に1になる (組込みで使う場合も A_LineNumberはファイルごとの行数になる)ので いまいち機能してないような。 ・OnExitの任意指定ってなくなった? TW_Initialize()の後に 無理矢理 OnExitラベル変更してるけど ExitAppの前に TW_End()を突っ込んでやればOK? ・.ini/.icoを相対パスで指定した場合、基準をA_LineFileと同じディレクトリにして欲しいとか言ってみるテスト 組込み時もデフォルト設定のままで使えるようになってると大変嬉しい
64 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 12:47:49 ID:RJg40VRS0] ついでにも一個要望 本末転倒だがチョン押し時の Send,{Mbutton} をヌッ殺すオプションが欲しい。 というよりタイムアウトした場合用の TW_POSTACTION が欲しい。 オートスクロールは使わないがAHKからHookかけてMbutton使いたい用途は山ほどある。 数行足すだけで済むものなので今は適当に改造して使わせてもらってますが、 更新が頻繁で追っかけるの大変になってきたので、機能として盛り込んでもらえると嬉しいなっと。
65 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 14:08:25 ID:K2RPyvk10] > 秀丸の分割ペイン切替がなくなったのは秀使いとしては地味にクリティカル 楽だったので組み込んだ > 組込みで使う場合も A_LineNumberはファイルごとの行数になる 知らなかったorz。無駄だから消した > OnExitの任意指定ってなくなった? 無くなった。でも呼ばなくても平気なはずなので、Initから外した。一応Docに追記した。 > 基準をA_LineFileと同じディレクトリにして欲しい 採用。俺も面倒だったw > タイムアウトした場合用の TW_POSTACTION 既にあるよ。 ttp://sites.google.com/site/agkh6mze/trackwheel - ページが大きいので分割した - 秀丸用対応の復活(Autoでやる) - ワーキングディレクトリをTrackWheelのあるディレクトリとした(人によってはデカい) - IEの設定が間違ってたorz
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 14:10:00 ID:K2RPyvk10] >> タイムアウトした場合用の TW_POSTACTION >既にあるよ。 Iniにはないので自分で書いてね、ってこと
67 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 17:30:40 ID:RJg40VRS0] >TW_POSTACTION すんませんまさに望んでた通りの動作でした。 TWの外に MButton: 置いて自制御する場合と混同してました。 >>65 (・∀・)イイ!! 秀の場合は HorzをScroll2に指定するといい感じ。 全般的にScrooll(つまみドラッグエミュ)は慣れてないせいか操作が難しい。 うまいことコツが掴めるようになると快適なのかな。
68 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 20:40:49 ID:DVBHOCyB0] SQLiteModule version1.1 ttp://sites.google.com/site/63cabinet/Home 内部仕様変更だけ Dynamic Functionはいまだ理解できず (どんなとき使えばいいんだ?) 勝手に便乗 昔Google Page Createrで同じようなの作ったけどすぐ削除された 個人的ファイル置き場にちょうどいいかな
69 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 21:00:13 ID:K2RPyvk10] >>68 乙。 たとえば、、、多分 SELECT文の結果をグローバル変数の配列とかにすると思うんだけど、 その最中に Loop して結果表を1行ずつフェッチする過程があるはず、 で、その行Loop中に他の関数を呼び出してデータ処理はお願いって風に出来ればなぁ、、、と思っただけ。 グローバル変数消費しないし、他の言語では結構見るタイプ。 まぁ、↓だと10カラムしか対応できなくて格好悪いけどこんな感じ。 ; モジュール側 GetSelectToCallback(db, sql, funcName) { Loop { 行取得する %funcName%(rowNo, colCount, col1,col2,col3,col4,col5,col6,col7,col8,col9,col10) ; 行をそのまま渡す! } } ; コールする側 LV_Delete() GetSelectToCallback(db, "SELECT * FROM HOGE", "HogeFunc") SB_SetText(LV_GetCount() . "件") HogeFunc(rowNo, col1="",col2="",col3="",col4="",col5="",col6="",col7="",col8="",col9="",col10="") { ; ダイレクトにリストビューに追加する LV_Add("", col1, col2, col3, col4, col5, col5, col6, col7, col8,col9,col10) }
70 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 21:41:20 ID:DVBHOCyB0] >>69 これは分かりやすい 理解したけど問題は列数か 頑張ってみます
71 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 18:24:12 ID:RYrDeuzr0] TrackWheel はコア部分変更以来、小さく動かしてゆっくりスクロールする動作が苦手になってる感じ >行数 = Round((移動量-動作閾値分の補正) / 動作感度) これだと tY=2 sY=10 ($Default) のとき Yが 7以上じゃないとスクロールが発生してくれないけど しきい値を越えたら、まずは 1行動いてくれるほうがなめらかになる感じ。 value := (value-t+s)//s とか。 あとWindowClassやControlClassの指定は部分じゃなくて前方一致? ContexterのリストビューがスクロールしないのでSpyで見たら WindowsForms10.SysListView32.app32 とかいう長ったらしいコントロール名だった。
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 18:54:27 ID:w/0/pa630] TrackWheelで左右に動かすとY軸が動くようにしているのは俺だけだろうな 上下で動かすよりなんとなく楽な感じがするんだよね
73 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 19:32:47 ID:1sWyUvxb0] > しきい値を越えたら、まずは 1行動いてくれるほうがなめらかになる感じ そういえば、前はそうなってたわ。 Round じゃなくて Ceil 使えばいいか > 部分じゃなくて前方一致? 誤爆がね、ってことでCaseLessの完全一致。 ワイルドカードで *Hoge* と出来るようにするよ。 つか、さすがに流れの遅いここで、このネタでスレが埋まるのはそろそろ悪い気がしてきた。。。 ブログでもいいんだけど気軽さがなぁ...この辺使わして貰っても良いかな ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1092315194/
74 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 22:44:52 ID:dP98pG5w0] 横から見てるだけでもいろいろ参考になるから、このまま続けてもOKと俺は思う
75 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 00:00:05 ID:dZ7SwV0k0] じゃ、何人かは使っているらしいんで ttp://sites.google.com/site/agkh6mze/trackwheel [V.5] - Altキー押下時にスクロール後にSleepする設定を加えた - サムドラッグエミュレート抑止オプションを追加 - スクロール方法の自動判別で Scroll2 を優先するオプションを追加(V.3と同じ判定になる) - デバッグコードが残っていたのを削除 [V.4] - 設定しても何もなかったオプション項目に意味を持たせた - 【重大】スクロール量の算出方式で閾値を超えた時に1行動くようにした >>73 - クラス名定義でワイルドカードで中間一致を追加 >>73
76 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 10:56:35 ID:Uc2zWhw/0] VistaでAutoHotkeyを使用しております。少し質問をさせて頂きたいのですが CCleanerをウィンドウの位置やサイズを変更するため簡単なスクリプトを 書いて見たのですが、機能しません同じパターン等で他のソフトを多数、使用して も問題無いのですが、何が原因なのでしょうか、御存じの方宜しくお願いします。 Run,"C:\Program Files\CCleaner\CCleaner.exe" WinWaitActive,Piriform CCleaner WinMove, A, , 40, 100, 1200, 900 ExitApp 以下のスクリプトでもCCleanerだけ反応ありません。 #NoTrayIcon ^1::WinMove, A, , 40, 100, 1200, 900 ^0::ExitApp return CCleaner - Home www.ccleaner.com/ >>>>>>>>>>( Window Title & Class )<<<<<<<<<<< Piriform CCleaner ahk_class #32770
77 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:08:16 ID:xVdEkJsk0] >>76 あまり参考にならないかもしれないけど、うちの環境では問題なく動作したよ。 OS:WindowsVista CCleaner 2.15.815
78 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:16:41 ID:RDJAsW630] >>76 俺も試してみたがちゃんと機能したよ
79 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:19:13 ID:RDJAsW630] あ、ちなみに OS:WinXP SP3 CCleaner v2.14.750 そしてアップデートあるのに気がつきました
80 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 12:36:32 ID:Uc2zWhw/0] レス感謝です。CCleaner 2.15.815で同じバージョンですね。 先ほど眠っていたXPに同じくセットすると、此方は問題無く 起動しました。因みにVistaのエアロはどうなってますか 私はオンオフともやはりCCleanerだけ動作しません。 77氏は問題無くVistaでも動作と言う事は環境問題かな
81 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 12:53:14 ID:9ldsyH9N0] 思ったより難しそうだけど、習得率はVBSとどっちが簡単ですか?
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 13:54:08 ID:QS/Psi5l0] 言語仕様としてはVBSの方が整理されている。 でも、ほとんどの人がAHKを使う理由は、キー割り当てや簡易GUI構築など、 VBSでは代替できない機能が目当てだと思うんで、 「習得のしやすさ」で選ぶ二択じゃない気がする。
83 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 14:24:04 ID:9ldsyH9N0] ちらっと見ただけだけど、面白そうな事が出来そうだな感じだったので 難易度はどれくらいなのかなと思って wshくらいの難易度で覚えられるならやってみたいけど あまり本格的なものだとすぐあきらめそうだなと
84 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 14:38:13 ID:XsghDILe0] wsh(VBA,JavaScript)ができるなら大丈夫だろ。 俺もなんとかなってる。 むしろ、AHKはかなりDSL色が強くて非常に独自言語っぽく、 他の言語だと簡単に書けたり、どの言語も同じように書けるのに、 AHKは変な書き方しなくちゃならなかったり、ちょっとクセがある。
85 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 15:16:28 ID:BZ/65qiJ0] >>81 おいらも2週間前にAutoHotkeyを知ったばかりの新参だけど、 「面白そうなこと」というのが具体的に決まっているのであれば、 やってみたらいいんじゃないかな。 ちなみに、おいらは前スレで紹介されてたモールス信号スクリプトを使って和文を打てるようにしたり、 物理演算シミュレーションソフトのPhunにちょっと遊べるを機能を追加したりして遊んでる。 後者のスクリプトは下手なりにソースコード晒して公開したのにウィルスと疑われてるけどなw チラ裏すまそ。
86 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 16:33:37 ID:9ldsyH9N0] レスありがとう ほんとにまだちょっと見た程度なので 具体的にやりたいものが決まってるわけではないんだけど いろいろ応用が利きそうかなと 途中で挫折しなかったらまた来てまます
87 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 17:46:00 ID:dEH4tJQQ0] キー置き換えっつースタンスと、バッチ代わりとか簡易GUI作成ツールとかってスタンスで 大分違いが出そう。。。 mayu+WSH(+マウ筋)から AHKに完全移行したけど、最初はキー置き換えだけしかしなかったなぁ
88 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 19:41:53 ID:JFwvyFAk0] mayu+AHK(非常駐スクリプト)で運用。
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 01:54:28 ID:1FFYSN/50] 質問です。 右クリックを押している間、 右クリックを連打するスクリプトってどう書けばいいんでしょうか? If Rbutton loop { click,rbutton sleep, 100 } 試行錯誤してもこの程度しかわかりませんでした。 押し下げ状態とかの記述とかも流行らせるを見てもよくわかりません。 よろしくお願いします。
90 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 02:33:30 ID:kckjR1IW0] 4と出る筈が、何で13になるの? ichi:=1 tasu:=+ san:=3 msgbox,% ichi tasu san return
91 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 02:38:56 ID:FprEOzFe0] >>90 演算子って変数に代入できるのか?
92 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 02:50:21 ID:7aT1UIeA0] > ichi tasu san は、 文字列結合してを出力しろっていってるのと同じ、 つまり↓ > ichi . tasu . san または > %ichi%%tasu%%san% javascript の eval とか python の exec に相当するのってahkには無い・・・はず
93 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 03:31:06 ID:kckjR1IW0] >>92 Σ(゚д゚|||)ガーンよく分かりました >>91 msgbox, % ichi + san なら4になるのに。 dynamic function calling (1.0.47.06)でどうにかならない?
94 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 12:53:57 ID:zBxweuAX0] >>89 RButton:: Loop { If(!GetKeyState("RButton","P")) Break MouseClick, RIGHT Sleep, 100 } Return >>93 Eval関数 ttp://www.autohotkey.com/forum/viewtopic.php?p=107547#107547
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 13:05:17 ID:1FFYSN/50] >>94 ありがとう!!
96 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 14:48:14 ID:XSOAc2jv0] >>94 eval良いね
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 19:56:10 ID:xL6BrQlZ0] とあるゲームで、キーにマウス移動+クリックという作業を割り当てたのですが sendplayをやろうとすると反応しなくなります。ちなみにOSはvistaで下のようなやつです send play a:: BlockInput, mousemove send,{a Down} send,{a up} sleep,100 mousemove,0,0 click sleep,100 mousemove,0,0 click BlockInput, mousemoveoff
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 20:52:43 ID:mcfS5KF00] 一行目は SendMode Play じゃないの? それから「とあるゲーム」じゃ、色んなSendModeでやってダメなら、あきらめろとしか言えないと思うが
99 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/15(木) 23:19:11 ID:kckjR1IW0] >>94 ありがとう(*゚∀゚)=3
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/16(金) 15:59:07 ID:9TC51kow0] ある座標値にあるウィンドウのウィンドウハンドルを取得するにはどう書けばいいんでしょうか?