如何在.NET框架中实现播放特定非系统默认声音文件?

2026-05-06 13:271阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计444个文字,预计阅读时间需要2分钟。

如何在.NET框架中实现播放特定非系统默认声音文件?

我想在我的应用中使用.NET代码播放系统声音——如果我想使用Beep、Asterisk等,我没有问题,因为我可以使用:My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk)。但是,如果我想播放菜单弹出声音呢?

我想在我的应用程序中使用.NET代码播放系统声音 – 如果我想使用Beep,Asterisk等我没问题,因为我可以使用:

My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk)

但是,如果我想玩“菜单弹出”这样的东西怎么办?默认情况下,此声音在Windows默认声音方案中关闭,但如果用户将此声音设置为执行某些操作,则我想播放它.

用户可以为此操作分配任何wav文件,因此我想找到他们分配的声音(如果有的话)并播放它.与Windows版本兼容的兼容性也很重要.

当然,播放它也不是问题,因为我可以使用:

My.Computer.Audio.Play(strWAVFile)

所以问题是关于如何找到它.

系统事件的wave声音文件存储在系统注册表中,自Windows 95以来它们一直存在,因此兼容性不是问题.

检查此注册表项以查找为事件播放的声音:

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default

对于“菜单弹出”,就像你说的那样,你可以从这个注册表项中读取默认值:

如何在.NET框架中实现播放特定非系统默认声音文件?

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\MenuPopup\.Current

所以你会写这样的代码:

Dim rk = Registry.CurrentUser.OpenSubKey("AppEvents\Schemes\Apps\.Default\" & _ "MenuPopup\.Current") Dim soundFile = rk.GetValue("") If soundFile <> "" Then My.Computer.Audio.Play(soundFile) End If

我在播放之前检查了soundFile变量是否为空,因为并非每个事件都有与之关联的声音,并且您不希望应用程序因为无法找到的声音文件而停止工作.

本文共计444个文字,预计阅读时间需要2分钟。

如何在.NET框架中实现播放特定非系统默认声音文件?

我想在我的应用中使用.NET代码播放系统声音——如果我想使用Beep、Asterisk等,我没有问题,因为我可以使用:My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk)。但是,如果我想播放菜单弹出声音呢?

我想在我的应用程序中使用.NET代码播放系统声音 – 如果我想使用Beep,Asterisk等我没问题,因为我可以使用:

My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Asterisk)

但是,如果我想玩“菜单弹出”这样的东西怎么办?默认情况下,此声音在Windows默认声音方案中关闭,但如果用户将此声音设置为执行某些操作,则我想播放它.

用户可以为此操作分配任何wav文件,因此我想找到他们分配的声音(如果有的话)并播放它.与Windows版本兼容的兼容性也很重要.

当然,播放它也不是问题,因为我可以使用:

My.Computer.Audio.Play(strWAVFile)

所以问题是关于如何找到它.

系统事件的wave声音文件存储在系统注册表中,自Windows 95以来它们一直存在,因此兼容性不是问题.

检查此注册表项以查找为事件播放的声音:

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default

对于“菜单弹出”,就像你说的那样,你可以从这个注册表项中读取默认值:

如何在.NET框架中实现播放特定非系统默认声音文件?

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\MenuPopup\.Current

所以你会写这样的代码:

Dim rk = Registry.CurrentUser.OpenSubKey("AppEvents\Schemes\Apps\.Default\" & _ "MenuPopup\.Current") Dim soundFile = rk.GetValue("") If soundFile <> "" Then My.Computer.Audio.Play(soundFile) End If

我在播放之前检查了soundFile变量是否为空,因为并非每个事件都有与之关联的声音,并且您不希望应用程序因为无法找到的声音文件而停止工作.