How to: Use invocação de plataforma para reproduzir um som Wave Arquivo (guia de programação C#)

O exemplo de código C# seguir ilustra como usar a plataforma chamar serviços para reproduzir um arquivo de som wave no sistema operacional Windows.

Exemplo

Este código de exemplo usa DllImport para importar winmm.dlldo PlaySound entrada do método apontar como Form1 PlaySound(). O exemplo possui um formulário simples do Windows com um botão. Clique no botão Abrir padrão do windows OpenFileDialog caixa de diálogo para que você possa abrir um arquivo para reprodução. Quando um arquivo wave é selecionado, ele é reproduzido, usando o PlaySound() método de winmm.O método assembly DLL. Para obter mais informações sobre do Winmm. dll PlaySound método, consulte usando a função PlaySound com arquivos de áudio Waveform. Procurar e selecionar um arquivo que possui uma extensão. wav e, em seguida, clique em Abrir para reproduzir o arquivo wave usando a plataforma chamar. Uma caixa de texto mostra o caminho completo do arquivo selecionado.

O Arquivos abertos caixa de diálogo é filtrada para mostrar somente os arquivos que têm uma extensão. wav através das configurações de filtro:

dialog1.Filter = "Wav Files (*.wav)|*.wav";
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WinSound
{
    public partial class Form1 : Form
    {
        private TextBox textBox1;
        private Button button1;

        public Form1()  //constructor
        {
            InitializeComponent();
        }

        [System.Runtime.InteropServices.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)
        {
            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);
            } 
        }
    }
}

Compilando o código

Para compilar o código.

  1. Crie um novo projeto de aplicativo do Windows C# em Visual Studio e o nome WinSound.

  2. Copie o código acima e cole-o sobre o conteúdo da Form1.cs arquivo.

  3. Copie o seguinte código e, em seguida, cole-o na Form1.Designer.cs arquivo, o 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();
    
  4. Compilar e executar o código.

Segurança

Para obter mais informações, consulte .NET Framework Security.

Consulte também

Referência

Visão geral da interoperabilidade (guia de programação de C#)

Visão geral da interoperabilidade (guia de programação de C#)

Conceitos

C# Programming Guide

Uma análise detalhada da plataforma Invoke

Outros recursos

Empacotamento de dados com a plataforma chamar