Compartilhar via


Como usar invocação de plataforma para executar um arquivo wave (Guia de Programação em C#)

O exemplo de código C# seguinte 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 ponto de entrada do método 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 arquivo para reprodução. Quando um arquivo wave é selecionado, ele é reproduzido, usando o PlaySound() método do winmm.Método de assembly DLL. Para obter mais informações sobre do Winmm. dll PlaySound método, consulte usando a função PlaySound com arquivos de áudio do tipo wave. 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. Criar um novo projeto de aplicativo do Windows C# no Visual Studio e o nome WinSound.

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

  3. Copie o seguinte código e cole-o aqui o 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 sobre interoperabilidade (Guia de Programação em C#)

Visão geral sobre interoperabilidade (Guia de Programação em C#)

Conceitos

Guia de Programação em C#

Visão aprofundada da invocação de plataforma

Outros recursos

Marshaling de dados com invocação de plataforma