システムにインストールされているMIDIデバイスを列挙する関数を作ろうと思います。 まずWin32API関数の定義をします。
Private Const MAXPNAMELEN = 32
Private Type MIDIOUTCAPS
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname As String * MAXPNAMELEN
wTechnology As Integer
wVoices As Integer
wNotes As Integer
wChannelMask As Integer
dwSupport As Long
End Type
Private Declare Function midiOutGetDevCaps Lib
"winmm.dll" Alias
"midiOutGetDevCapsA" _
(ByVal uDeviceID As Long, _
lpCaps As MIDIOUTCAPS, _
ByVal uSize As Long) As Long
Private Declare Function midiOutGetNumDevs Lib
"winmm.dll" () As Long |
つぎにGetMidiDevice関数を作ります。
Public Sub GetMidiDevice(Device As
Collection)
Dim lngCount As Long
Dim MaxCount As Long
Dim strBuff As String
Dim lngRC As Long
Dim MidiCaps as MIDIOUTCAPS
MaxCount = midiOutGetNumDevs()
'MIDI出力デバイスが使用できない場合
If MaxCount <= 0 Then Exit Sub
For lngCount = 0 To MaxCount - 1
lngRC = midiOutGetDevCaps(lngCount,
MidiCaps, Len(MidiCaps))
strBuff = MidiCaps.szPname
strBuff = Left(strBuff,
InStr(strBuff, vbNullChar) - 1)
Device.Add strBuff
Next
End Sub
|
使い方はMIDIデバイス名を格納するコレクションを引数に指定すればOKです。
使用例
フォームにリストボックスを貼り付けた状態で行ってください。
Dim MDev As New Collection
Dim I As Long
GetMidiDevice MDev
For I = 1 To MDev.Count
List1.AddItem MDev(I)
Next |
|