Procedura: utilizzare il richiamo piattaforma per riprodurre un file audio (Guida per programmatori C#)
Aggiornamento: novembre 2007
Nell'esempio di codice C# riportato di seguito viene illustrato come utilizzare i servizi platform invoke per riprodurre un file audio wave nel sistema operativo Windows.
Esempio
In questo esempio di codice viene utilizzato DllImport per importare il punto di ingresso del metodo PlaySound di winmm.dll come Form1 PlaySound(). L'esempio è costituito da un semplice Windows Form con un pulsante. Se si fa clic sul pulsante, viene visualizzata una finestra di dialogo OpenFileDialog standard di Windows che consente di aprire un file da riprodurre. Quando viene selezionato, il file wave viene riprodotto utilizzando il metodo PlaySound() del metodo dell'assembly winmm.DLL. Per ulteriori informazioni sul metodo PlaySound di winmm.dll, vedere Utilizzo della funzione PlaySound con i file audio waveform. Cercare e selezionare un file con estensione wav, quindi scegliere Apri per riprodurre il file wave utilizzando platform invoke. Il percorso completo del file selezionato verrà visualizzato in una casella di testo.
La finestra di dialogo File aperti verrà filtrata in modo da visualizzare solo i file con estensione wav tramite le impostazioni di 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);
}
}
}
}
Compilazione del codice
Per compilare il codice
Creare un nuovo progetto di applicazione Windows C# in Visual Studio e assegnare a tale progetto il nome WinSound.
Copiare il codice precedente e incollarlo sul contenuto del file Form1.cs.
Copiare il codice riportato di seguito e incollarlo nel file Form1.Designer.cs, nel metodo InitializeComponent(), dopo il codice esistente.
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();
Compilare il codice ed eseguirlo.
Sicurezza
Per ulteriori informazioni, .NET Framework Security (informazioni in lingua inglese).
Vedere anche
Attività
Esempio di tecnologia di richiamo piattaforma
Concetti
Riferimenti
Cenni preliminari sull'interoperabilità (Guida per programmatori C#)