VB6対応

 

Visual Basic 中学校 > VB6 サンプル >

WAVファイルを再生する

 

1.単純な例

サウンドを非同期再生(再生中にプログラムを停止しない)する例

VB6対応

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Private Const SND_ASYNC = &H1

Private Sub Command1_Click()

    Call PlaySound("C:\WINDOWS\Media\tada.wav", 0, SND_ASYNC)

End Sub

メモ:この方法ではメモリのサイズによってWAVファイルのサイズが制限されます。

 

2.サウンドをとめる例

「1.単純な例」のようにPlaySoundを使って再生しているサウンドをとめる例

VB6対応


Call PlaySound(vbNullString, 0, 0)
 

 

3.同期再生

再生中にプログラムを停止する例

VB6対応

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Sub Command1_Click()

    Call PlaySound("C:\WINDOWS\Media\tada.wav", 0, 0)

End Sub

 

繰り返し再生

サウンドを繰り返し再生する例

VB6対応

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Private Const SND_LOOP = &H8

Private Sub Command1_Click()

    Call PlaySound("C:\WINDOWS\Media\tada.wav", 0, SND_LOOP)

End Sub

 

非同期繰り返し再生

サウンドを非同期で繰り返し再生する例

VB6対応

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Private Const SND_ASYNC = &H1
Private Const SND_LOOP = &H8

Private Sub Command1_Click()

    Call PlaySound("C:\WINDOWS\Media\tada.wav", 0, SND_ASYNC Or SND_LOOP)

End Sub

 

汎用性のある例

VB6対応

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function
GetShortPathNameA Lib "kernel32.dll" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long

Dim SoundFileName As String

'■再生
Private Sub Command1_Click()

    SoundFileName = GetShortFileName("C:\The Test\テスト.mp3")

    Call mciSendString("Play """ & SoundFileName & """", vbNullString, 0, 0)

End Sub

'■停止
Private Sub Command2_Click()

    Call mciSendString("Close """ & SoundFileName & """", vbNullString, 0, 0)

End Sub

'■一時停止
Private Sub Command3_Click()

    Call mciSendString("Pause """ & SoundFileName & """", vbNullString, 0, 0)

End Sub

'■再開(一時停止からの再生 Playでも代替可)
Private Sub Command4_Click()

    Call mciSendString("Resume """ & SoundFileName & """", vbNullString, 0, 0)

End Sub

'■GetShortFileName
'■機能:長いファイル名から短いファイル名を取得する
'■例:GetShortFileName("C:\Documents and Settings\All Users\デスクトップ\Readme.txt") = "C:\DOCUME~1\ALLUSE~1\デスク~1\Readme.txt"

Private Function GetShortFileName(Path As String) As String

    Dim ShortPathName As String * 260

    Call GetShortPathNameA(Path, ShortPathName, Len(ShortPathName))
    GetShortFileName = Left(ShortPathName, InStr(ShortPathName, vbNullChar) - 1)

End Function


メモ

・この例ではWAVファイルだけでなくmidファイル,mp2ファイルも再生できます。Windows2000以上ではmp3も再生できます。

・詳しい使い方はテクニック 1.VBでサウンドを再生する方法を参照してください。

・一時停止機能はmidファイルの場合は使用できないようです。