VB6でwaveファイルから音の波形を取得するプログラム
を作りたいと思っているのですが、mmioOpen関数の使い方
が分からずに困っています。とりあえず現在の状況を書くと、
Private Declare Function mmioOpen Lib "winmm.dll" Alias "mmioOpenA" (ByVal szFileName As String, lpmmioinfo As MMIOINFO, ByVal dwOpenFlags As Long) As Long
Private Declare Function mmioClose Lib "winmm.dll" (ByVal hmmio As Long, ByVal uFlags As Long) As Long
Private Type MMIOINFO
dwFlags As Long
fccIOProc As Long
pIOProc As Long
wErrorRet As Long
htask As Long
cchBuffer As Long
pchBuffer As String
pchNext As String
pchEndRead As String
pchEndWrite As String
lBufOffset As Long
lDiskOffset As Long
adwInfo(4) As Long
dwReserved1 As Long
dwReserved2 As Long
hmmio As Long
End Type
Dim p1 As MMIOINFO
Dim h As Long
Dim closewav As Long
Private Sub Command1_Click()
openfilename = "C:\sample.wav"
'WAVEファイルを開く
h = mmioOpen(openfilename, p1, MMIO_READ)
MsgBox h
If h <> 0 Then
MsgBox "WAVEファイルのオープンに失敗"
End If
'WAVEファイルを閉じる
closewav = mmioClose(h, MMIO_FHOPEN)
MsgBox closewav
End Sub
だれか分かる方がいれば、間違っている箇所、やり方などを教えてください。
よろしくお願いします。
ご回答ありがとうございます。
参考URLのサンプルを見て自分のミスに気が付きました。
どうやらmmioOpen関数とmmioClose関数を混同
していたようで、関数が成功すると0が返ってくると
勘違いしていました。
ですので、正しくは
If h = 0 Then
MsgBox "WAVEファイルのオープンに失敗"
End If
とするべきでした。
お礼
ご回答ありがとうございます。 参考URLのサンプルを見て自分のミスに気が付きました。 どうやらmmioOpen関数とmmioClose関数を混同 していたようで、関数が成功すると0が返ってくると 勘違いしていました。 ですので、正しくは If h = 0 Then MsgBox "WAVEファイルのオープンに失敗" End If とするべきでした。