2010年10月21日

C# 播放wav~筆記

突然忘記怎麼用~結果還要去google大神查~

唉~人真的是不能沒有筆記阿~~




以上是香蕉先生的工商時間XDDD
言歸正傳~~~~

其實google神了一下以後~也學到蠻多新招的啦XD
播放個音效而已~這麼多招-.-
using System.Media;
SoundPlayer sp = new SoundPlayer("sound位置");
sp.Play();

順便筆記一下MSDN的資料~~~

SoundPlayer 類別

控制 .wav 檔音效的播放。

備註

SoundPlayer 類別 (Class) 提供簡單的介面可載入和播放 .wav 檔。SoundPlayer 類別支援從檔案路徑、URL、包含 .wav 檔的 Stream、或包含 .wav 檔的內嵌資源載入 .wav 檔。
若要使用 SoundPlayer 類別播放音效,請設定包含 .wav 檔路徑的 SoundPlayer 並呼叫其中一個播放方法。您可以使用其中一個建構函式 (Constructor),或者設定SoundLocation 或 Stream 屬性��辨認要播放的 .wav 檔。在播放之前可使用其中一個載入方法將檔案載入,也可以延到呼叫其中一個播放方法後再載入。設定從Stream 或從 URL 載入 .wav 檔的 SoundPlayer,必須在播放開始之前將 .wav 檔載入到記憶體中。
您可以同步或非同步載入或播放 .wav 檔。如果您呼叫同步載入或播放方法,呼叫緒執行會等待直到方法傳回,這可能會造成繪製和其他事件被中斷。呼叫非同步的載入或播放方法將允許呼叫執行緒持續運作而不中斷。如需非同步方法呼叫的詳細資訊,請參閱 HOW TO:在背景執行作業
SoundPlayer 完成載入 .wav 檔後,它會引發 LoadCompleted 事件。您可以檢查事件處理常式中的 AsyncCompletedEventArgs,以判斷載入成功或失敗。當音效來源設定為新的檔案路徑或 URL 時,會引發 SoundLocationChanged 事件。當音效來源設定為新的 Stream 時,會引發 StreamChanged 事件。如需處理事件的詳細資訊,請參閱使用事件
如需 SoundPlayer 的詳細資訊,請參閱 SoundPlayer 類別概觀

版本資訊
支援版本:4、3.5、3.0、2.0

--------------------------------------------------------------------------
還有用載入winmm.dll~使用PlaySound的method來播放!!


範例



在下面的程式碼中,會使用 DllImport 將 winmm.dll 的 PlaySound 方法進入點匯入為 Form1 PlaySound()。這是以簡單的 Windows Form 再加上一個按鈕為例。按一下表單上的按鈕,即會顯示標準的 Windows OpenFileDialog 對話方塊,讓您開啟要播放的檔案。選取了 WAV 檔之後,便會使用 winmm.DLL 組件方法的PlaySound() 方法播放。如需 winmm.dll 之 PlaySound 方法的詳細資訊,請參閱 Using PlaySound to Play Waveform-Audio Files。瀏覽並選取副檔名為 .wav 的檔案,然後按一下 [開啟],使用平台叫用播放 WAV 檔。文字方塊會顯示所選取檔案的完整路徑。

[開啟檔案] 對話方塊會經過篩選設定,只顯示副檔名為 .wav 的檔案:
dialog1.Filter = "Wav Files (*.wav)|*.wav";

[System.Runtime.InteropServices.DllImport("winmm.DLL", EntryPoint = "PlaySound", SetLastError = true)]
private static extern bool PlaySound(string szSound, System.IntPtr hMod, PlaySoundFlags flags);

[System.Flags] 
public enum PlaySoundFlags : int
{
SND_SYNC = 0x0000,
SND_ASYNC = 0x0001, 
SND_NODEFAULT = 0x0002, 
SND_LOOP = 0x0008, 
SND_NOSTOP = 0x0010,
SND_NOWAIT = 0x00002000, 
SND_FILENAME = 0x00020000, 
SND_RESOURCE = 0x00040004 
}

private void button1_Click (object sender, System.EventArgs e)
{
OpenFileDialog dialog1 = new OpenFileDialog(); 

dialog1.Title = "Browse to find sound file to play";
dialog1.InitialDirectory = @"c:\";
dialog1.Filter = "Wav Files (*.wav)|*.wav";
dialog1.FilterIndex = 2;
dialog1.RestoreDirectory = true;

if(dialog1.ShowDialog() == DialogResult.OK) 
{ 
textBox1.Text = dialog1.FileName;
PlaySound (dialog1.FileName, new System.IntPtr(), PlaySoundFlags.SND_SYNC);
} 
}

----------------------------------------------------------------
還有嵌入windows media player activex的方法~

不過好像有點太大才小用了XDDD

新增一個Windows Media Player的控制項到Form裡面~

然後....
//如果autopaly為true的話設定好url就會自動撥放了
//@的符號是告訴編譯器不要編譯反斜線~啾咪!
axWindowsMediaPlayer1.URL = @"C:\Users\Lamborgini\Desktop\Gnomeregan.wmv"; 

//停止撥放
axWindowsMediaPlayer1.Ctlcontrols.stop();

AxWindowsMediaPlayer Object相關屬性+方法+事件底加!

沒有留言:

張貼留言

您可以使用一些 HTML 標記,例如 <b>, <i>, <a>