SystemSounds Play не работает - PullRequest
       16

SystemSounds Play не работает

4 голосов
/ 05 декабря 2008

Я пытаюсь воспроизвести системный звук Asterisk из программы на C # с

System.Media.SystemSounds.Asterisk.Play();

но звук не воспроизводится. В моей системе установлен звук для Asterisk, и другие программы (не написанные мной) вызывают воспроизведение различных системных звуков.

Может кто-нибудь предложить какие-либо возможные причины для этого?

Ответы [ 3 ]

5 голосов
/ 30 января 2009

Я игнорировал эту проблему до сегодняшнего дня. Некоторые специалисты по поиску показали, что это довольно распространенная проблема и совершенно не связана с вызовами .NET Play.

Что происходит, так это то, что хотя вы можете воспроизводить / просматривать звуки из панели управления «Звуки» и «Аудиоустройства», они не воспроизводятся, когда программы запускают звуки. Кажется, это повреждение, вызванное установкой программы. Исправление довольно простое.

Запись (по умолчанию) для HKEY_CURRENT_USER в реестре должна быть (значение не установлено). Если это что-то еще (мое было OfficeCompleted), удалите запись (щелкните правой кнопкой мыши и выберите «Удалить»), и она будет воссоздана как (значение не установлено). Должны воспроизводиться системные звуки.

1 голос
/ 07 июня 2016

Я только на 8 лет опоздал на вечеринку, но у меня только что была эта проблема на планшетном ПК с Windows 7. То, что это исправило? Классика Restart.

Попробуйте перезагрузить устройство.

1 голос
/ 05 декабря 2008

Извините, если это преувеличивает очевидное ...

  1. Вы уверены, что эта строка кода выполняется?
  2. Как Робс предлагает сыграть в любой другой SystemSounds?

Я посмотрел в отражатель. Какой бы из SystemSounds вы не вызывали, возвращается экземпляр SystemSound, инициализированный с типом (например, 0x40 для Asterix) для системного звука, который вы хотите воспроизвести. Затем он передается в метод Win32 bool MessageBeep (тип int). Импортировано как:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
internal static extern bool MessageBeep(int type);

Возвращение bool никак не сохраняется - то есть вы не можете его получить: (

Исключения не проглатываются, поэтому вы должны их получить, если их выбросили.

Надеюсь, это поможет (хотя, вероятно, просто говорю вам, что вы уже знаете)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...