Aracılığıyla paylaş


Nasıl yapılır: Wave Dosyasını Oynatmak için Platform Çağırma Kullanma (C# Programlama Kılavuzu)

Platform kullanma aşağıdaki C# kod örneği göstermektedir Hizmetleri Windows işletim sisteminde bir dalga ses dosyasını çalmak için harekete geçirmek.

Örnek

Bu kod örneği kullanır DllImport almak winmm.dll's PlaySound yöntemi giriş noktası olarak Form1 PlaySound().Bir düğme ile basit bir Windows formu vardır.Düğmesini tıklatarak standart bir windows açılır OpenFileDialog iletişim kutusu oynatmak istediğiniz dosya açabilirsiniz.Wave dosyası seçildiğinde kullanarak oynanır PlaySound() WINMM yöntemi.DLL'i derleme yöntemi.Winmm.dll's hakkında daha fazla bilgi için PlaySound yöntemi, bkz: Waveform ses dosyaları ile PlaySound fonksiyonunu kullanarak.Gözat ve .wav uzantılı bir dosya seçin ve ardından açık çalmak için platform kullanarak wave dosyası çağır.Bir metin kutusunda seçilen dosyanın tam yolunu gösterir.

Açık dosyaları yalnızca filtre ayarları aracılığıyla .wav uzantılı dosyaları göstermek için iletişim kutusunun filtre:

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);
            } 
        }
    }
}

Kod Derleniyor

Kodu derlemek için

  1. Visual Studio'da yeni bir C# Windows Application projesi oluşturmak ve belgeye WinSound adını verin.

  2. Yukarıdaki kodu kopyalayın ve içeriği yapıştırın Form1.cs dosyası.

  3. Aşağıdaki kodu kopyalayıp yapıştırdığınızda, Form1.Designer.cs de, dosya InitializeComponent() yöntemi, varolan bir koda sonra.

    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. Derleme ve kod çalıştırabilir.

Güvenlik

Daha fazla bilgi için bkz: .net Framework güvenlik.

Ayrıca bkz.

Başvuru

Birlikte Çalışabilirliğe Genel Bakış (C# Programlama Kılavuzu)

Birlikte Çalışabilirliğe Genel Bakış (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu

Platform Çağırmaya Daha Yakından Bakış

Diğer Kaynaklar

Platform Çağırma ile Veri Sıralama