Вопрос по audio, c++, windows – Воспроизвести звук на внутренних динамиках и возможность использовать старую функцию XP API?

1

После выхода Windows Vista функция Windowsгудок воспроизводит звуковой сигнал на подключенных динамиках вместо внутреннего.

Есть ли способ доступа к старой функции? Будет ли это возможно, заполучив старые API Windows? Или есть ли другой способ сделать это возможным? Если это так, я хотел бы иметь возможность установить частоту и продолжительность.

Я должен упомянуть, что я на самом деле нацелен на платформу Windows XP.

Что бы это ни стоило, эта функциональность, вероятно, была удалена, потому что многие новые компьютеры либо не имеют системного динамика, либо реализованы только через звуковую карту. Если вы хотите воспроизводить мелодии, используйте настоящий аудио API. :) duskwuff
Я недавно купил новую и свежую материнскую плату (MSI-Z68A), и она шла с внутренним динамиком. Большинство компьютеров по-прежнему имеют встроенные динамики и используют их для оповещения во время POST (самотестирование при включении). David
... но много компьютеровdon't, Те, которые вы собираете из кусочков, часто делают, потому что они предназначены для энтузиастов, которые заботятся о таких вещах, как POST и разгон, но OEM-производители перестали включать аппаратные колонки по соображениям стоимости. Cody Gray♦

Ваш Ответ

2   ответа
6

который загружается во время выполнения из любой версии ОС, которую вы сейчас используете. Поскольку кода нет ни в вашем исполняемом файле, ни в системной DLL, вы не можете его запустить (даже не думайте о копировании Kernel32.dll из другой версии ОС, которая просто кричит о проблеме).

Вы можете попробовать использоватьMessageBeep вместоBeep, но это дает вам меньше контроля над выходом и, вероятно, будет по-прежнему использовать вашу звуковую карту вместо внутренней

За интересную историюMessageBeep функция, см.Блог Ларри Остермана.

@DavidJensen: нет, это маловероятно.
@DavidJensen: маловероятно, но возможно, в зависимости от реализации виртуальной машины. Это зависит от того, передает ли реализация виртуальной машины драйверов 8254 ее на реальную машину 8254 или на ее звуковую карту.
Будет ли запуск на виртуальной машине с XP издавать звуковые сигналы на внутреннем динамике? David
2

в, поэтому нет доступа к ним.

Функция была намеренно удалена в Windows 7, согласноБлог Ларри Остермана; эта почта Из архивов конкретно обсуждается этот вопрос. Кажется, чтоBeep.sys был удален, и функциональность этого старого драйвера псевдо-устройства была изменена для намеренного перенаправления звука на звуковую карту. Статья представляет собой интересное чтение с исторической точки зрения.

Ларри - сотрудник MS, который работал над новой звуковой платформой для Vista и Win7, и он был в MS со времен динозавров (по крайней мере, MS-DOS: D), так что он, вероятно, знал. :)

Похожие вопросы