С# подает звуковой сигнал через системный динамик - прямой доступ к sys. оратор

Я использовал следующий код, и он должен звучать через системный динамик. Код действительно звучит, но через звуковую карту (настольный динамик/наушники).

Я думаю, что можно будет сделать какой-то звук непосредственно с помощью системного звукового динамика, поскольку в диспетчере устройств он отображает драйвер для этого. Есть ли какая-нибудь работа для этого.

** Не через динамик/наушники по умолчанию. -- ОС win7 или 8 **

  Console.Beep(i, 100);

ИЗМЕНИТЬ

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


person kuma DK    schedule 30.03.2016    source источник
comment
Отлично. Нет ли другого способа получить доступ к звуковому оборудованию напрямую.   -  person kuma DK    schedule 30.03.2016
comment
@ Глен Томас: Не дубликат. Этот вопрос задается относительно win 7, а предыдущий был опубликован 8 лет назад и относится только к ОС до win7.   -  person kuma DK    schedule 04.07.2016
comment
codeproject.com/Tips/1022207/ сработало для меня!   -  person Bachor    schedule 20.11.2017


Ответы (3)


Согласно приведенной ниже статье, он не поддерживается в Windows 7 x64.

https://blogs.msdn.microsoft.com/larryosterman/2010/01/04/whats-up-with-the-beep-driver-in-windows-7/

person Roman Doskoch    schedule 30.03.2016

Аппаратные требования Windows 7 для 64-разрядных машин не включали поддержку чипа PIC 8254, который необходим для звукового сигнала внутреннего динамика ПК, поэтому Microsoft изменила способ работы этой функции для Windows 7, и инструкция звукового сигнала теперь перенаправляется на ваш компьютер. Аудиовыход Windows вместо этого.

Значит, это невозможно.

person Glen Thomas    schedule 30.03.2016
comment
Но водитель есть. Мы не можем использовать его каким-либо образом, и должна быть причина, по которой он должен быть в диспетчере устройств. - person kuma DK; 30.03.2016
comment
Ларри говорит, что для Windows 7 мы решили проблему полностью — мы переместили все функции, которые раньше содержались в Beep.Sys, в агент системных звуков пользовательского режима — теперь, когда вы вызываете API Beep() вместо того, чтобы манипулировать чипом 8254, вызов перенаправляется в агент пользовательского режима, который фактически воспроизводит звуки. - person Glen Thomas; 30.03.2016
comment
В ПОРЯДКЕ. Так что тогда мы не можем напрямую работать с устройством звукового сигнала в обход API. - person kuma DK; 30.03.2016
comment
Не все компьютеры имеют встроенный динамик и микросхему 8254, поскольку Windows 7 сделала аппаратное обеспечение полностью избыточным. Windows API не поддерживает то, о чем вы просите, поэтому я думаю, что ваш единственный вариант для связи с внутренним динамиком для компьютеров, на которых он есть, - это написать собственный драйвер устройства и установить его на любой машине, на которой вам нужно его использовать. . Насколько это возможно, я не уверен. - person Glen Thomas; 30.03.2016

Возможно, требуется настройка вашего устройства. Вы можете попытаться понять это: https://superuser.com/a/230167

person Erin_O    schedule 30.03.2016