- 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 }
|

|