Как воспроизводить системные звуки не по умолчанию в .NET - PullRequest
4 голосов
/ 12 мая 2011

Я хочу воспроизводить системные звуки с помощью кода .NET в моем приложении - нет проблем, если я хочу использовать Beep, Asterisk и т. Д., Поскольку я могу просто использовать:

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

Но что еслиЯ хочу играть что-то вроде «Всплывающее меню»?Этот звук отключен по умолчанию в схеме звуков Windows по умолчанию, но если пользователь настроил этот звук на выполнение чего-либо, я хочу его воспроизвести.

Пользователь мог назначить любой файл wav этому действию, чтобыЯ хочу найти, какой (если есть) звук, который им назначен, и воспроизвести его.Совместимость с версиями Windows обратно на XP также важна.

Играть в нее, конечно, тоже не проблема, поскольку я могу использовать:

My.Computer.Audio.Play(strWAVFile)

Так что вопрос действительно в том, как его найти.

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Волновые звуковые файлы для системных событий хранятся в системном реестре, и они были там начиная с Windows 95, поэтому совместимость не является проблемой.

Проверьте этот раздел реестра на звуки, которые воспроизводятся для событий:

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default

Для «всплывающего меню», как вы сказали, вы можете прочитать значение по умолчанию из этого раздела реестра:

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 пустой перед воспроизведением, потому что не с каждым событием может быть связан звук, и вы не хотите, чтобы ваше приложение перестало работать из-за звукового файла, который не может быть найден.

0 голосов
/ 22 июля 2017

При условии, что папка мультимедиа Windows по умолчанию находится в C\Windows\Media

Вы можете просто воспроизвести любой звук, который поставляется с Windows по умолчанию.

 My.Computer.Audio.Play("c:\windows\media\alarm01.wav", AudioPlayMode.Background)

Установите новую версию Windows и откройте папку Media.

При кодировании обратите внимание на совместимость с целевыми окнами.

...