如何实现声音随弹出窗口的弹出而播放,随弹出窗口的关闭而停止?

时间:2021-03-06 23:43:53
我在windows应用程序中添加了一个类,写了如下代码,在From1的按钮单击事件下调用Sound.Play("exa");来实现的播放声音,现我想实现如题所要的效果,该怎么实现呢?
using System.Collections;
using System.ComponentModel;
using System.Runtime.InteropServices;


namespace Play
{
internal class Helpers
{
[Flags]
public enum PlaySoundFlags : int
{
放  
SND_ASYNC = 0x0001,    /*  play  asynchronously  */  //异步播放  

}

[DllImport("winmm")]
public static extern bool PlaySound(string szSound, IntPtr hMod, PlaySoundFlags flags);
}

public class Sound
{
//播放
public static void Play(string strFileName)
{
   strFileName = @"..\..\music\background.WAV";

}

//调用PlaySound方法,播放音乐  
Helpers.PlaySound(strFileName, IntPtr.Zero, Helpers.PlaySoundFlags.SND_ASYNC);
}

//关闭
public static void Stop()
{
Helpers.PlaySound(null, IntPtr.Zero, Helpers.PlaySoundFlags.SND_ASYNC);
}
}
}

5 个解决方案

#1


写错了,是Sound.Play("strFileName");,不是Sound.Play("exa");

#2


new 一个 Form 的时候调用播放的方法?
然后在这个新 Form 的 Close() 的时候调用关闭的方法?

#3


new 一个 Form 的时候调用播放的方法? 
然后在这个新 Form 的 Close() 的时候调用关闭的方法?


这样就可以了

#4


引用 3 楼 ericzhangbo1982111 的回复:
new 一个 Form 的时候调用播放的方法?  
然后在这个新 Form 的 Close() 的时候调用关闭的方法? 
这样就可以了


不是new的时候调用方法,而是在Load的时候调用这个方法,因为有可能提前new出来了。
Close的时候关闭不错。

#5


能更具体些吗?

#1


写错了,是Sound.Play("strFileName");,不是Sound.Play("exa");

#2


new 一个 Form 的时候调用播放的方法?
然后在这个新 Form 的 Close() 的时候调用关闭的方法?

#3


new 一个 Form 的时候调用播放的方法? 
然后在这个新 Form 的 Close() 的时候调用关闭的方法?


这样就可以了

#4


引用 3 楼 ericzhangbo1982111 的回复:
new 一个 Form 的时候调用播放的方法?  
然后在这个新 Form 的 Close() 的时候调用关闭的方法? 
这样就可以了


不是new的时候调用方法,而是在Load的时候调用这个方法,因为有可能提前new出来了。
Close的时候关闭不错。

#5


能更具体些吗?