- 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以降も参照
- 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% }
|

|