Как заставить компьютерный динамик издавать звуковые сигналы из командной строки Windows 7?
Я запускаю несколько длинных видеокодов, используя интерфейс командной строки Handbrake. После того, как все мои кодировки сделаны, я хотел бы подать звуковой сигнал на ПК, так как я обычно выключаю свои большие внешние динамики.
В Linux я бы установил пакет " beep ", но пока не нашел такой программы для Windows 7.
Возможно связанные ссылки:
- Поддержка Microsoft: Системный звуковой сигнал не работает в Windows Vista x64 с устройствами HD Audio (я действительно использую устройство HD Audio: SoundMAX ADI1986A)
- Блог MSDN: что случилось с драйвером Beep в Windows 7?
Редактировать: кажется, что вопрос превратился в "Как заставить Windows 7 подать звуковой сигнал на динамик ПК?", для которого ответ, предоставленный HarryMC, является наиболее подходящим.
12 ответов
Было бы полезно узнать, является ли ваша Windows 7 64-битной или 32-битной.
По умолчанию Beep PC Speaker изменился в Windows 7 - Как вернуться к старому стилю:
Звуковой сигнал по умолчанию управляется драйвером,
c:\windows\system32\drivers\beep.sys
, Возможно, если вы отключите его с помощью драйвера из XP/Vista, это увеличит громкость.Чтобы увидеть этот драйвер, откройте диспетчер устройств, затем нажмите "Просмотр"> "Показать скрытые устройства". Затем в разделе "Драйверы без Plug and Play" вы увидите "Beep". Это драйвер, который запускает ваш звуковой сигнал. Щелкните правой кнопкой мыши на нем, затем выберите "Свойства" и перейдите на вкладку "Драйвер", затем нажмите "Сведения о драйвере". Здесь показана версия файла, которая выглядит так, как будто она была изменена в Windows 7. Поэтому замените ее на более старую версию и посмотрите, что произойдет.
Порядок действий:
- Загрузитесь с диска UBCD4WIN (или BartPE, если у вас нет жесткого диска SATA)
- Возьмите в собственность файл "C:\Windows\System32\Drivers\Beep.sys" и предоставьте локальной группе "Администраторы" разрешения "Полный доступ".
- Переименуйте "Beep.sys" в "Beep.old" (на всякий случай)
- Скопируйте "Beep.sys" с компьютера с XP в это место.
В Windows 7 звуковой сигнал был переписан для передачи звукового сигнала на звуковое устройство по умолчанию для сеанса. Обычно это звуковая карта, за исключением случаев, когда она запускается в службах терминалов, и в этом случае на клиенте подается звуковой сигнал.
( источник) ( статья о том, почему). Для тех, кто не может прочесть: "Это должно было снизить стоимость производства
Но если вы довольны тем, что из ваших громкоговорителей подается звуковой сигнал, простой пакетный файл может это сделать.
Вы можете написать пакетный файл DOS, который подаст звуковой сигнал, выполнив следующее: в командной строке DOS введите:
echo @echo (Alt-7)>beep.bat
но вместо того, чтобы вводить символы: "(Alt-7)", вы удерживаете нажатой клавишу Alt и нажимаете 7 на цифровой клавиатуре. Не используйте 7 на qwerty части клавиатуры, она должна быть на клавиатуре, и Num Lock должен быть включен.
( источник)
Если у вас установлен Python 2.x, эта строка в bat-файле работает
python -c "print '\7'"
Этот маленький драйвер VDD устраняет проблему с NTVDM Windows 7, когда вывод на динамик ПК неправильно упакован.
Это может быть связано с тем, что функциональность системного драйвера BEEP.SYS была перенесена в Usermode Sound Agent. Для получения дополнительной информации см. Блог Ларри Остермана.
Этот драйвер пытается решить проблему, подключив функцию NTVDM, отвечающую за звуковой сигнал (LazyBeep), и заменяет ее собственной реализацией, которая имеет различные варианты решения проблемы.
Пытаться start
подделка файла, который не существует. Это делает и всплывающее окно и звуковой сигнал, но я не уверен, хотите ли вы всплывающее окно или нет...
Кажется, что следующее работает на системах Windows с py2 & 3:
cmd line:
python -c "import winsound; winsound.PlaySound('SystemExit', winsound.SND_ALIAS);"
замечательно, драйвер, отличный от MS, который вы упомянули выше, работает! Бип! Выше кто-то предлагал попробовать beep.sys из WinXP x64, но вы что-то упустили (я тоже):
https://docs.microsoft.com/en-us/windows/win32/api/utilapiset/nf-utilapiset-beep
support for Beep was dropped in Windows Vista and Windows XP 64-Bit Edition.
Слышал что? «Windows XP 64-разрядная». К подписанию драйверов это не имеет никакого отношения, хотя в системах x64 подписание драйверов является обязательным, что очень раздражает, на Win10 x32 я просто скопировал драйвер MS из WinXP в Win10 и все запустилось нормально, а вот на Win10 драйвер ДОЛЖЕН быть подписан, несмотря на всю ерунду, упомянутую в Интернете относительно параметров bcdedit «testsigning» и «nointegritychecks». Позвольте мне прояснить это раз и навсегда. Если «проверка подписи драйверов» не отключена в расширенном меню диспетчера загрузки Windows:
а) вы НЕ сможете установить драйвер, если не присутствует файл каталога (cat). Сообщение «Этот пакет драйверов не содержит файла каталога, продолжить?» Запрос подтверждения НЕ отображается ВООБЩЕ, вместо этого установка завершается с ошибкой (pnputil, infdefaultinstall). setupapi.dev.log содержит странную запись:
Driver package does not contain a catalog file, and Code Integrity is in Test Signing mode.
Driver package failed signature validation. Error = 0xE000022F
или:
The third-party INF does not contain digital signature information.
Так? Если тестовое подписание включено, почему бы не подсказать? Спросите у Microsoft. Потому что, если «принудительное использование подписи драйверов» отключено во время загрузки, появится диалоговое окно подтверждения, в котором будет написано:
Driver package does not contain a catalog file, and user does not want to install driver package.
или «хочет установить» в зависимости от того, что решит сделать пользователь
б) Вы не можете запустить НЕПОДПИСАННЫЙ драйвер. Что в этом смешного, вы МОЖЕТЕ запустить НЕПРАВИЛЬНО подписанный драйвер. Как и мой сертификат, который я использую для подписи драйверов, является недействительным, несмотря на то, что ему предоставлены все без исключения «keyUsage» и «extendedKeyUsage»:
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign
extendedKeyUsage = anyExtendedKeyUsage, 1.3.6.1.4.1.311.10.12.1, serverAuth, clientAuth, codeSigning, emailProtection, timeStamping, OCSPSigning, msCTLSign, msEFS, 1.3.6.1.5.5.8.2.2, 1.3.6.1.4.1.311.10.3.2, msCodeInd, msCodeCom, msEFS, 1.3.6.1.4.1.311.10.3.4.1, 1.3.6.1.4.1.311.10.3.5, 1.3.6.1.4.1.311.10.3.6, 1.3.6.1.4.1.311.10.3.7, 1.3.6.1.4.1.311.10.3.8, 1.3.6.1.4.1.311.10.3.9, 1.3.6.1.4.1.311.10.3.10, 1.3.6.1.4.1.311.10.3.11, 1.3.6.1.4.1.311.10.3.12, 1.3.6.1.4.1.311.10.5.1, 1.3.6.1.4.1.311.10.6.1, 1.3.6.1.4.1.311.10.6.2, 1.3.6.1.4.1.311.20.1, 1.3.6.1.4.1.311.21.19, 1.3.6.1.4.1.311.20.2.1, 1.3.6.1.4.1.311.21.5, 1.3.6.1.4.1.311.21.6, 1.3.6.1.4.1.311.10.3.13, 1.3.6.1.4.1.311.20.2.2, 1.3.6.1.5.5.7.3.5, 1.3.6.1.5.5.7.3.6, 1.3.6.1.5.5.7.3.7
что-то в «basicConstraints» Windows не нравится, возможно, это:
basicConstraints = CA:true
поэтому диалог "цифровая подпись" (проводник, файл драйвера правой кнопкой мыши, вкладка "подписи") ноет об этом:
Die Erweiterung für die Basiseinschränkung eines Zertifikats wurde nicht eingehalten.
Dieses Zertifikat ist ungültig, da eine der Zertifizierungsstellen im Zertifizierungspfad nicht berechtigt ist, Zertifikate auszustellen oder es kann nicht als Endeinheitszertifikat verwendet werden.
но драйвер все равно запускается. Microsoft и безопасность. Но, как я уже сказал, драйвер MS не пищит не из-за этого, а просто потому, что нет x64-битного MS beep.sys, который действительно пищит. Плюс, что насчет этой функции?
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebeep
И точно не пищит, по факту у меня нет звука ни через звуковую карту, ни через динамик. ни с помощью «Beep», ни с помощью «MessageBeep». МС утверждает:
Beep was rewritten to pass the beep to the default sound device for the session. This is normally the sound card
"Обычно со звуковой картой" все в порядке, а как насчет родной Windows PE? WinPE не поставляется с аудиодрайвером, поэтому подача звукового сигнала через звуковую карту не будет работать, если вы не вырвете драйверы из Windows 10 Enterprise и не интегрируете их в WinPE или что-то в этом роде. В любом случае это не имеет значения, потому что, как я уже сказал, функция «Сигнал» НЕ подает звуковой сигнал и через звуковую карту в моей Windows 10 Enterprise, хотя звуковая карта там работает.
Ответ "Канопе" - это ответ! Тот драйвер, на который он ссылается, единственный, кто возвращает звуковой сигнал () для Windows 7 64bit. Я попробовал и могу подтвердить, что он работает как шарм.
В качестве альтернативы вы также можете скачать "buzzer.exe" с http://encode.ru/threads/383-A-command-line-tool-for-Windows-which-beeps-through-the-System-Speaker, который помогает использовать pc-динамик из командной строки еще больше. Он поддерживает пользовательские частоты и повторы.
Я никак не связан с waldbauer.com или encode.ru, я просто искал решение для пропавшего сигнала, нашел его и хотел помочь "распространить слово"!.. o)
Это основано на ответе Нифла, но упрощено. Вместо того, чтобы возиться с цифровой клавиатурой и писать во временный командный файл, я просто вставил сам символ ниже.
Особый персонаж "звук колокольчика": https://pastebin.com/zNYsysGc
Есть два способа использовать его:
1) Скопируйте символ на странице выше и вставьте его в конец команды cmd. (например.
echo "hi"; <special_char>
)
2) Введите символ самостоятельно, просто нажав ctrl+g на клавиатуре в окне cmd.
Запуск этого символа в команде cmd будет воспроизводить звуковой сигнал. (Я использую его, чтобы уведомить меня о завершении длительной задачи)
РЕДАКТИРОВАТЬ: Кроме того, быстрый способ получить специальный символ в буфере обмена (например, для вставки в пакетные файлы) - это ввести следующую команду:
echo <Ctrl+G> | clip
(совет отсюда)
Если вы выключите свои внешние динамики, вы больше не будете их использовать. Таким образом, вы также можете просто отключить их от компьютера, чтобы звуковая команда прошла через динамик ПК. Никакого дополнительного программного обеспечения или пересадки драйверов не требуется. Вам просто нужно помнить, чтобы восстановить их потом.
Другое решение:
start wmplayer "C:\Windows\Media\Alarm10.wav" && timeout 5 && taskkill /im wmplayer.exe
Слава ответу Юлискова