- 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以降も参照
- 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]
- ある座標値にあるウィンドウのウィンドウハンドルを取得するにはどう書けばいいんでしょうか?
- 101 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/16(金) 17:07:00 ID:ys4XQ/JO0]
- WinGetのcmdにListを指定して全てのハンドルを取得して、
ループでWinGetPosして判定すればいいんじゃね
- 102 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/16(金) 17:55:22 ID:8WDRn3Rn0]
- WindowFromPointをdllcall
- 103 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/17(土) 15:23:11 ID:15HQKhST0]
- Windowsキーが長押しかどうか判定するために
www.autohotkey.com/forum/topic16951.html のMorseを使って下のようにしても、"1"が返ってくることがありません。 LWin以外のaとかなら、ちゃんと長押しで"1"が返ってきます。 Windowsキーが長押しされたかどうか判定するにはどうすればいいでしょうか? LWin:: p := Morse() MsgBox, %p% Return
- 104 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/17(土) 16:36:46 ID:AAdcRplY0]
- LWin::MsgBox, % "long = " . LongPress(A_ThisHotkey, 500)
LongPress(key, limit) { Loop if !GetKeyState(key, "P") break return A_TimeSinceThisHotkey > limit }
- 105 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/17(土) 17:35:30 ID:CwKiW6jb0]
- >>103
(Pert6 >>782より転載) これを改造すればいいよ。 782 :名無しさん@お腹いっぱい。:2008/11/27(木) 01:43:58 ID:pOwnMABe よく分からんけど、 Ctrl とかが押しっぱなしになる。解決はよく分からんが対処法としてアラートだすようにした。 if書きたくないから、三項演算子だいすきif書きたくないから、三項演算子だいすき #SingleInstance #Persistent keys = Ctrl|Shift|Alt|LWin|RWin alertDur = 3000 ;(ms) SetTimer, Alerter,200 return Alerter: alert = Loop, PARSE, keys, | { %A_LoopField% := !GetKeyState(A_LoopField) ? 0 : !%A_LoopField% ? A_TickCount : %A_LoopField% alert .= (%A_LoopField% && (A_TickCount - %A_LoopField%) > alertDur) ? "[" A_LoopField ": " (A_TickCount - %A_LoopField%) "ms]" : "" } Tooltip, %alert% return
- 106 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 23:50:13 ID:XmkZ8Jyg0]
- >>104>>105
遅くなりましたがありがとうございます。 >>104 を試してみましたが、>>103 と同じように LWinでは長押ししても "0" しか返ってきませんでした。 LWin じゃなくて a ならばちゃんと長押しで "1" が返るんですが、 私の環境だけでしょうか?それとも LWin は特別なんでしょうか? >>105 はよくわからないところもあって改造はできてませんが、 GetKeyState で判定して時間を計るという点では一緒なのかなと・・・
- 107 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 23:58:42 ID:svY9DCGD0]
- >>101-102
お礼が送れて本当にすみませんでした。レスありがとうございました DllCall("WindowFromPoint", Int, X, Int, Y, UInt) で、コントロールのウィンドウハンドルを取得できる事まで分かったのですが ここからウィンドウを取得するにはどうしたらいいのでしょうか・・・?
- 108 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/19(月) 00:02:32 ID:U3VSUvzG0]
- 正解出してやってんのに馬鹿じゃねーの
|

|