p/invoke メソッドを使用してwav
サウンドを再生します。Windows Media Player を呼び出してmp3
サウンドを再生する方法はいくつかありますが、遅くて面倒です。
mp3
短いファイルを再生する簡単な方法はありますか?
これは主に、画面や音楽を見ていないときに、アプリケーションのプロンプトと可聴キューを提供するためのものです。
ありがとう!
p/invoke メソッドを使用してwav
サウンドを再生します。Windows Media Player を呼び出してmp3
サウンドを再生する方法はいくつかありますが、遅くて面倒です。
mp3
短いファイルを再生する簡単な方法はありますか?
これは主に、画面や音楽を見ていないときに、アプリケーションのプロンプトと可聴キューを提供するためのものです。
ありがとう!
mp3 を再生する方法を探している場合:
パブリック クラス サウンド { [DllImport("aygshell.dll", SetLastError = true)] プライベート スタティック extern IntPtr SndPlaySync(string pszSoundFile, uint dwFlags); [DllImport("aygshell.dll")] private static extern uint SndOpen(string pszSoundFile, ref IntPtr phSound); [DllImport("aygshell.dll")] private static extern uint SndPlayAsync(IntPtr hSound, uint dwFlags); [DllImport("aygshell.dll")] private static extern uint SndClose(IntPtr hSound); [DllImport("aygshell.dll")] private static extern uint SndStop(int SoundScope, IntPtr hSound); const int SND_SCOPE_PROCESS = 0x1; private static Random _random = new Random(); // init スタートアップ パス...一時的な mp3 を保持する場所 プライベート静的文字列 _startupPath; public static string StartupPath { get { return Sound._startupPath; } 設定 { Sound._startupPath = 値; } } プライベート列挙型 SND { 同期 = 0x0000、 非同期 = 0x0001、 NODEFAULT = 0x0002、 メモリ = 0x0004、 ループ = 0x0008、 停止 = 0x0010、 今待機 = 0x00002000、 エイリアス = 0x00010000、 エイリアス_ID = 0x00110000、 ファイル名 = 0x00020000、 リソース = 0x00040004 } public static void PlaySound(string fileName) { PlaySound(ファイル名, null); } public static void PlaySound(string fileName, WaitCallback callback) { SndStop(SND_SCOPE_PROCESS, IntPtr.Zero); ThreadPool.QueueUserWorkItem(playSoundProcess, 新しいオブジェクト[] {ファイル名、コールバック}); } private static void playSoundProcess(オブジェクト o) { object[] par = (object[])o; 文字列ファイル名 = (文字列)par[0]; WaitCallback コールバック = (WaitCallback)par[1]; SndPlaySync(ファイル名, 0); 試す { File.Delete(ファイル名); } キャッチ { } if (コールバック != null) callback.Invoke(ファイル名); } public static void ClearSounds() { SndStop(SND_SCOPE_PROCESS, IntPtr.Zero); 試す { string[] oldFiles = Directory.GetFiles(StartupPath, "*.mp3"); foreach (oldFiles の文字列 f) File.Delete(f); } キャッチ { } } public static void PlaySound(byte[] mp3, WaitCallback コールバック) { string temp = string.Format("{0}\\{1}-{2}.mp3", StartupPath, DateTime.Now.Ticks, _random.Next()); 使用 (FileStream fs = File.Create(temp)) { fs.Write(mp3, 0, mp3.Length); } PlaySound(一時、コールバック); } }
CF Framework 3.5には、.WAVファイルの再生のサポートが含まれるようになりました。
キューと効果音用の短いWAVファイルは、 「すぐに再生できる」ため、MP3よりも高速に再生される可能性があります...