mciSendStringで再生終了時にメッセージを表示するには?
投稿者 まりもん  (社会人)
投稿日時
2017/3/30 10:32:31
http://rucio.a.la9.jp/main/kikou/kikou3_mciSendString.html
こちらが参考になると思います。
こちらが参考になると思います。
投稿者 さばみそ煮  (社会人)
投稿日時
2017/3/30 13:40:58
WMP使うのが簡単でいいと思うけど
投稿者 よっしー26  (社会人)
投稿日時
2017/3/31 23:32:18
まりもんさん、さばみそ煮さん、ご回答ありがとうございます。
とりあえず、まりもんさんに教えて頂いたHPを参考にコードを下記のように変更したのですが、
mp3ファイルを再生し終えてもメッセージが表示されません。
どのようにすれば、再生が終わったらメッセージを表示できるのでしょうか?
Const WM_MCINOTIFY As Integer = &H9B3 'mciSendString の処理終了を表す定数 ←追加
Const MCI_NOTIFY_SUCCESSFUL As Integer = &H1 '処理成功を表す定数 ←追加
Private Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles Button1.Click
'再生するファイル名
Dim fileName As String = "C:\music.mid"
Dim cmd As String
'ファイルを開く
cmd = "open """ + fileName + """ alias " + aliasName
If mciSendString(cmd, "", 0, 0) <> 0 Then ←変更
Return
End If '再生する
cmd = "play " + aliasName + " notify" ←変更
mciSendString(cmd, "", 0, Me.Handle.ToInt32) ←変更
End Sub
以下を追加しました。
Protected Overrides sub WndProc(ByRef m As Message)
If m.Msg = WM_MCINOTIFY AndAlso m.WParam.ToInt32 = MCI_NOTIFY_SUCCESSFUL Then
MsgBox("再生終了")
End If
MyBase.WndProc(m)
End Sub
とりあえず、まりもんさんに教えて頂いたHPを参考にコードを下記のように変更したのですが、
mp3ファイルを再生し終えてもメッセージが表示されません。
どのようにすれば、再生が終わったらメッセージを表示できるのでしょうか?
Const WM_MCINOTIFY As Integer = &H9B3 'mciSendString の処理終了を表す定数 ←追加
Const MCI_NOTIFY_SUCCESSFUL As Integer = &H1 '処理成功を表す定数 ←追加
Private Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles Button1.Click
'再生するファイル名
Dim fileName As String = "C:\music.mid"
Dim cmd As String
'ファイルを開く
cmd = "open """ + fileName + """ alias " + aliasName
If mciSendString(cmd, "", 0, 0) <> 0 Then ←変更
Return
End If '再生する
cmd = "play " + aliasName + " notify" ←変更
mciSendString(cmd, "", 0, Me.Handle.ToInt32) ←変更
End Sub
以下を追加しました。
Protected Overrides sub WndProc(ByRef m As Message)
If m.Msg = WM_MCINOTIFY AndAlso m.WParam.ToInt32 = MCI_NOTIFY_SUCCESSFUL Then
MsgBox("再生終了")
End If
MyBase.WndProc(m)
End Sub
投稿者 まりもん  (社会人)
投稿日時
2017/4/3 10:33:40
元記事のMM_MCINOTIFYの値が違いますね。
Const MM_MCINOTIFY As Integer = &H3B9
としてください。
Const MM_MCINOTIFY As Integer = &H3B9
としてください。
投稿者 よっしー26  (社会人)
投稿日時
2017/4/8 21:52:06
まりもん さん、回答ありがとう。
ご指摘いただいた値を直したところ、あっけなく解決しました。
またわからないことがありましたら、アドバイスをお願いします。
ご指摘いただいた値を直したところ、あっけなく解決しました。
またわからないことがありましたら、アドバイスをお願いします。
メッセージを表示したいのですが、再生されると同時にメッセージが
表示されてしまいます。
どのようにすれば、再生が終了してからメッセージを表示することが
できるのでしょうか?
Private Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles Button1.Click
'再生するファイル名
Dim fileName As String = "C:\music.mid"
Dim cmd As String
'ファイルを開く
cmd = "open """ + fileName + """ alias " + aliasName
If mciSendString(cmd, Nothing, 0, IntPtr.Zero) <> 0 Then
Return
End If '再生する
cmd = "play " + aliasName
mciSendString(cmd, Nothing, 0, IntPtr.Zero)
MsgBox("再生終了")
End Sub