サウンドの再生(U) <TOP>
WAVファイルをドラッグ&ドロップし再生します。
PlaySound WAVファイルを再生
GetShortPathName ファイルの短い型式のパス名を取得
ファイルをドラッグ&ドロップしてEditBoxに入れ再生します。
Edit1は、複数行入力:あり、垂直オートスクロール:あり、シェルドロップ:あり、に設定しておきます。
'================================================================ '= WAVファイルの再生 '= (PlaySound2.bas) '================================================================ #include "Windows.bi" ' WAVファイルを再生する Declare Function Api_PlaySound& Lib "winmm" Alias "PlaySoundA" (ByVal lpszName$, ByVal hModule&, ByVal dwFlags&) ' ファイルの短い形式のパス名を取得 Declare Function Api_GetShortPathName& Lib "Kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath$, ByVal lpszShortPath$, ByVal lBuffer&) #define SND_Alias &H10000 'pszSoundはシステムイベントのエイリアス #define SND_Alias_ID &H110000 'pszSoundは定義済みサウンド識別子 #define SND_APPLICATION &H80 'アプリケーション特有の関連づけで再生 #define SND_ASYNC &H1 '非同期再生。再生が始まるとすぐに制御を返す #define SND_FILENAME &H20000 'pszSoundはファイル名 #define SND_LOOP &H8 '繰り返し再生 #define SND_MEMORY &H4 'サウンドイベントのファイルはメモリにロード #define SND_NODEFAULT &H2 '指定のサウンドが見つからない時、警告音などを出さずに終了 #define SND_NOSTOP &H10 'すでに他のサウンドが再生されている時、指定のサウンドを再生しない #define SND_NOWait &H2000 'ドライバがビジーの時はすぐに制御を返す #define SND_PURGE &H40 'サウンドの再生を停止 #define SND_RESOURCE &H40004 'pszSoundはリソース識別子を表わす #define SND_SYNC &H0 '同期再生。再生が終了するまで制御を返さない Var Shared Edit1 As Object Var Shared Button1 As Object Var Shared Button2 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14 Var Shared PathName As String Var Shared Sound As String '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long PathName = Edit1.GetWindowText Sound = Space$(260) Ret = Api_GetShortPathName(PathName, Sound, Len(Sound)) If Len(Sound) > 0 Then Ret = Api_PlaySound(Sound, 0, SND_ASYNC Or SND_NODEFAULT Or SND_FILENAME) If Ret <> 0 Then SetWindowText "Soundは再生中!" Else SetWindowText "Soundは再生できません!" End If End If End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var Ret As Long Ret = Api_PlaySound(ByVal 0, 0, 0) SetWindowText "停止しました!" End Sub '================================================================ '= シェルドロップされたファイル名を取得 '================================================================ Declare Sub Edit1_DropFiles edecl (ByVal DF As Long) Sub Edit1_DropFiles(ByVal DF As Long) Var CN As Long CN = GetDropFileCount(DF) PathName = GetDropFileName(DF, 0) Edit1.SetWindowText PathName End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End