Como usar a plataforma invocar para reproduzir um arquivo WAV
O exemplo de código C# a seguir ilustra como usar serviços de invocação de plataforma para reproduzir um arquivo de som WAV no sistema operacional Windows.
Exemplo
Este código de exemplo usa DllImportAttribute para importar winmm.dll
o ponto Form1 PlaySound()
de entrada do PlaySound
método como . O exemplo tem um Windows Form simples com um botão. Clicar no botão abre uma caixa de diálogo padrão do Windows OpenFileDialog para que você possa abrir um arquivo para reproduzir. Quando um arquivo wave é selecionado, ele é reproduzido usando o PlaySound()
método da biblioteca winmm.dll . Para obter mais informações sobre esse método, consulte Usando a função PlaySound com arquivos de áudio de forma de onda. Procure e selecione um arquivo que tenha uma extensão de .wav e, em seguida, selecione Abrir para reproduzir o arquivo wave usando platform invoke. Uma caixa de texto mostra o caminho completo do arquivo selecionado.
using System.Runtime.InteropServices;
namespace WinSound;
public partial class Form1 : Form
{
private TextBox textBox1;
private Button button1;
public Form1() // Constructor.
{
InitializeComponent();
}
[DllImport("winmm.DLL", EntryPoint = "PlaySound", SetLastError = true, CharSet = CharSet.Unicode, ThrowOnUnmappableChar = 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)
{
var dialog1 = new OpenFileDialog();
dialog1.Title = "Browse to find sound file to play";
dialog1.InitialDirectory = @"c:\";
//<Snippet5>
dialog1.Filter = "Wav Files (*.wav)|*.wav";
//</Snippet5>
dialog1.FilterIndex = 2;
dialog1.RestoreDirectory = true;
if (dialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = dialog1.FileName;
PlaySound(dialog1.FileName, new System.IntPtr(), PlaySoundFlags.SND_SYNC);
}
}
private void Form1_Load(object sender, EventArgs e)
{
// Including this empty method in the sample because in the IDE,
// when users click on the form, generates code that looks for a default method
// with this name. We add it here to prevent confusion for those using the samples.
}
}
A caixa de diálogo Abrir arquivos é filtrada para mostrar apenas os arquivos que têm uma extensão de .wav através das configurações de filtro.
Compilação do código
Crie um novo projeto de aplicativo C# Windows Forms no Visual Studio e nomeie-o WinSound. Copie o código anterior e cole-o sobre o conteúdo do arquivo Form1.cs . Copie o código a seguir e cole-o no arquivo Form1.Designer.cs , no InitializeComponent()
método, após qualquer código existente.
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(192, 40);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(88, 24);
this.button1.TabIndex = 0;
this.button1.Text = "Browse";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(8, 40);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(168, 20);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "File path";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Platform Invoke WinSound C#";
this.ResumeLayout(false);
this.PerformLayout();
Compile e execute o código.