C# 在VisualStudio应用程序中播放声音

C# 在VisualStudio应用程序中播放声音,c#,audio,visual-studio-2015,playback,C#,Audio,Visual Studio 2015,Playback,我正在Visual Studio 2015(C#)中制作一个程序,我想在其中添加声音效果。然而,我查阅了无数的教程,但没有一本是有效的,并且给了我很多错误。如果有人能给我一个从资源文件中播放.wav文件的代码,我将非常感激如果您想播放的文件是wav文件,请尝试这个 var player = new System.Media.SoundPlayer("c:\\tes.wav"); player.Play(); 在按钮1\u单击事件处理程序下添加以下方法代码: System.Media.Sou

我正在Visual Studio 2015(C#)中制作一个程序,我想在其中添加声音效果。然而,我查阅了无数的教程,但没有一本是有效的,并且给了我很多错误。如果有人能给我一个从资源文件中播放.wav文件的代码,我将非常感激

如果您想播放的文件是wav文件,请尝试这个

var player = new System.Media.SoundPlayer("c:\\tes.wav");
player.Play();

在按钮1\u单击事件处理程序下添加以下方法代码:

 System.Media.SoundPlayer player = 
 new System.Media.SoundPlayer();
 player.SoundLocation = @"C:\Users\Public\Music\Sample Music\xxxx.wav";
 player.Load();
 player.Play();

我自己写了这个SounceController,希望它能有所帮助:

using System.Windows.Media; // add reference to system.windows.presentation.
using System;
using System.IO;
public class SoundController
{
    private bool isPlaying;
    private MediaPlayer player;

    public SoundController()
    {
        player = new MediaPlayer();
    }
    ~SoundController()
    {
        player = null;
    }

    public void Play(string path)
    {
        if (!File.Exists(path) || isPlaying)
            return;

        isPlaying = true;

        player.Open(new Uri(path));
        player.Play();
    }
    public void Stop()
    {
        if (isPlaying)
        {
            isPlaying = false;
            player.Stop();
        }
    }
}

我建议您使用PInvoke使用winmm.dll播放声音

首先,将
System.Runtime.InteropServices
命名空间导入到项目中

using System.Runtime.InteropServices;
那么在你的课堂上你会有

[DllImport("winmm.dll")]
static extern Int32 mciSendString(string command, StringBuilder buffer, int bufferSize, IntPtr hwndCallback);

public void Play(string path ,string name)
{
     // Open
     mciSendString($@"open {path} type waveaudio alias {name}", null, 0, IntPtr.Zero);
     // Play
     mciSendString($@"play {name}", null, 0, IntPtr.Zero);
 }
您可以播放名为的wave文件的正确路径发出的声音。给定名称不需要与wave文件的名称相同。例如:

Play(@"C:\soundeffect.wav", "soundEffect1");
通常声音效果是同时播放的。可以多次调用此方法以同时播放多个文件

Play(@"C:\soundeffect1.wav", "soundEffect1");
Play(@"C:\soundeffect2.wav", "soundEffect2");
Play(@"C:\soundeffect3.wav", "soundEffect3");

是否添加了对System.Windows.Presentation的引用?您还需要系统和IO名称空间。我更新了我的答案。@Catquatwa请描述一下你的错误。如果没有看到您的代码示例或遇到的问题,就很难提供无错误代码。。您还可以一起播放多个声音。WinForms?WPF?…还有什么吗?是的,它在问题中说.wav:)“.wav”没有帮助。我问的是你写的申请书的类型;不是声音文件的格式…抱歉,这是对先前评论的回复,该评论现在已被删除。如果您设置了正确的路径,100%的输出得到保证。请查看msdn参考。尝试查找逻辑,不要仅在输出后面运行:)终于工作了:)感谢您的努力获得了回报:)