ヘッダー

VB.NET2002対応 VB.NET2003対応 VB2005対応

 

mciSendString関数のエラーメッセージを取得する

この記事が対象とするファイル形式

 mp3 (*.mp3) 対象です。
 wave (*.wav) 対象です。
 midi (*.mid) 対象です。

 

この例ではButton1をクリックすると 再生していないファイルを停止しようとする。mciSendString関数はこの操作に対しエラーを返すのでそのエラーメッセージを表示する。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal fdwError As Integer, ByVal lpszErrorText As String, ByVal cchErrorText As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   
'mciSendString関数がエラーを返すようにプログラムします。
    'このエラーはVB自体がエラーになるわけではないのでOn ErrorやTryではトラップできません。

   
Dim Result As Integer

   
'再生していないファイルを停止しようとします。
   
Result = mciSendString("stop MySound", "", 0, 0)

    If
Result <> 0
Then
       
'エラーメッセージを取得して表示します。
       
Dim ErrorMessage As String = GetErrorString(Result)
        MsgBox(ErrorMessage, MsgBoxStyle.Exclamation,
"Error " & Result)
    End
If

End Sub
'■GetErrorString
''' <summary>mciSendString関数の戻り値からエラーメッセージを取得します。</summary>
''' <param name="APIResult">mciSendString関数の戻り値。エラーコード。</param>
''' <returns>APIResultに対応するエラーメッセージを返します。</returns>
Private Function GetErrorString(ByVal APIResult As Integer) As String

   
Dim Buffer As String = New String(Chr(0), 255)
    Dim ErrorMessage As
String

   
Call mciGetErrorString(APIResult, Buffer, Len(Buffer))

    ErrorMessage = Replace(Buffer, Chr(0), "")

    Return
ErrorMessage

End
Function

メモ:mciSendString関数が返すエラーはVBのエラーではないのでOn ErrorやTryではトラップできません。mciSendString関数の戻り値でエラーがあるかないか判断できます。

メモ:「エラーメッセージ」とは言いますが、正常に動作が完了した場合のメッセージを取得することもできます。