有没有办法以编程方式确定何时将耳机插入电脑?
基本上,我只想写一个简单的工具,除非插入耳机,否则会使我的声音静音。这是否可能?
答案 0 :(得分:12)
在Windows Vista及更高版本中,您可以使用设备到达和删除通知并检索端点形式因素,以确定您的音频解决方案的制造商是否将特定端点视为“耳机”。
在Vista之前无法确定此信息。
答案 1 :(得分:8)
许多音频编解码器提供“杰克检测”,这可能是您需要谷歌的术语。
在Vista下,您可以使用IMMDeviceEnumerator :: GetDefaultAudioEndpoint()和IMMDevice :: GetState()来检查“端点”的状态。还有'IKsJackDescription Interface'。
在XP下,您可以尝试'waveInGetNumDevs' - 在插入耳机之前,驱动程序可能会报告0。有关详细信息,请参阅this discussion中的注释。
答案 2 :(得分:2)
我认为你无法提供通用解决方案。
我也指出了nray的解决方案。大多数Realtek声卡,特别是英特尔主板上的realtek具有此功能。但在这种情况下,硬件不是“标准”硬件。换句话说,在那些声卡中,应该有特殊的机制来检测输出套接字节点上的阻抗变化和“火灾事件”
如果你有那种声卡+你只需要一个有效但不完美的解决方案,只需修改调用配置程序的例程即可。 (一种静音/取消静音的程序)。然后使用新实用程序替换configurer程序(您可以使用process explorer找到它)。
N.B我不是100%确定我们是否能识别插件 - 明显插上。
答案 3 :(得分:1)
有可能 - RealTek有一个系统托盘实用程序弹出恼人的一个有用的实用程序,用于在将某些东西连接到麦克风插孔时调整音频,也许耳机插孔类似。 / p>
答案 4 :(得分:1)
除非你的声卡提供支持,否则这是值得怀疑的。
可以想象,有些声卡中有一个微动开关,用于检测耳机插入的时间,或者可以测量信号的阻抗,以了解电路何时关闭。我没有在任何廉价的声卡中看到它。
现在,如果你有一个与麦克风共享的插孔(例如耳机),你可能能够检测到麦克风通道上的“弹出”,但是我觉得这仍然是非常不可靠的。你不知道它是插入还是被移除,只是发生了变化。
就个人而言,我只是一直静音,只有当我真的想要声音时才打开它。