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よりも高速に再生される可能性があります...