Обнаружение, когда наушники подключены - PullRequest
13 голосов
/ 14 мая 2009

Можно ли программно определить, когда наушники подключены к компьютеру?

По сути, я просто хочу написать простой инструмент, который будет отключать мой звук, если наушники не подключены. Это вообще возможно?

Ответы [ 5 ]

12 голосов
/ 16 мая 2009

В Windows Vista и более поздних версиях вы можете использовать уведомления о прибытии и удалении устройства и получить формфактор конечной точки, чтобы определить, считает ли производитель вашего аудио решения конкретную конечную точку "наушником".

До Vista не было способа определить эту информацию.

8 голосов
/ 14 мая 2009

Многие аудиокодеки обеспечивают "обнаружение гнезда", это, вероятно, термин, который вам нужно Google.

Похоже, что в Vista вы можете использовать IMMDeviceEnumerator :: GetDefaultAudioEndpoint () и IMMDevice :: GetState () для проверки состояния «конечной точки». Существует также 'IKsJackDescription Interface' .

Под XP вы можете попробовать 'waveInGetNumDevs' - драйвер может сообщать 0, пока наушники не подключены. См. Комментарии в в этом обсуждении для получения дополнительной информации.

2 голосов
/ 14 мая 2009

Я думаю, вы не можете предложить универсальное решение.

Я также указываю на решение Nray. Большинство звуковых карт Realtek, особенно Realtek на материнских платах Intel, имеет эту функцию. Но в этом случае аппаратное обеспечение не является «стандартным». Другими словами, в этих звуковых картах должен быть специальный механизм для обнаружения изменения сопротивления по узлам выходных сокетов и «Запустить событие»

Если у вас есть такая звуковая карта +, вам просто нужно работающее, но не идеальное решение, просто измените процедуру, которая вызывает программу настройки. (Программа для отключения / включения звука). Затем замените программу configurer (вы можете найти ее с помощью Process Explorer) новой утилитой.

N.B. Я не уверен на 100%, можем ли мы идентифицировать подключаемый модуль - четко отключить.

1 голос
/ 14 мая 2009

Нет, если ваша звуковая карта не поддерживает ее, что сомнительно.

Вполне возможно, что некоторые звуковые карты имеют микропереключатель для определения, когда наушники подключены, или что они могут измерить помехоустойчивость сигнала, чтобы узнать, когда цепь замкнута. Я не видел этого ни в одной дешевой звуковой карте.

Теперь, если у вас есть разъем, который используется совместно с микрофоном (например, гарнитурой), вы можете обнаружить «треск» на канале микрофона, но я рискну, что это все равно будет довольно ненадежным. Вы бы не знали, было ли оно подключено или удалено, просто произошло изменение.

Лично я просто отключаю звук все время и включаю его только тогда, когда действительно хочу звук.

1 голос
/ 14 мая 2009

Это может быть возможно - RealTek имеет утилиту в системном трее, которая выскакивает раздражающая полезная утилита для настройки звука, когда вы подключаете что-либо к разъему для микрофона, возможно, гнездо для наушников похоже. *

...