如何检查麦克风是否已插入/拔出

3
如何使用Delphi检查麦克风是否已插入/未插入?
1个回答

4
function WaveInDevicePresent: boolean;
begin
  result := waveInGetNumDevs > 0;
end;

(使用MMSystem

2
@opc0de:这是因为你始终有某种形式的波形输入设备存在。它可能只是一个驱动程序,没有物理连接的麦克风(或者你正在使用一个内置麦克风的笔记本电脑,它始终存在?)。从WinAPI的角度来看,“麦克风”这个术语并没有很好地定义。在大多数情况下,除非你连接了麦克风,否则没有输入设备。但在某些情况下,就像你的情况一样,该函数将始终返回true。尽管如此,如果有连接的麦克风,它将永远不会返回false - Andreas Rejbrand
谢谢解释,不管怎样我认为这是唯一能够检测到这个+1的方法。 - opc0de
如果您插入了USB麦克风,这可能会起作用。但对于本地音频输入插孔,通常情况下是不可能的。(某些音频芯片硬件确实有一种方法可以检测到某个插孔是否插入了主板或PCI声卡上,但该功能没有以任何标准化的方式通过Windows API公开。) - Warren P
@Warren P:我已经在每台电脑上尝试过了,使用3.5毫米麦克风输入(也就是说,没有USB麦克风),都可以正常工作。 - Andreas Rejbrand
我尝试了一下,但在某些电脑上无法正常工作。因为它返回了许多设备,所以无法确定它是麦克风还是线路输入等。然而,可以使用waveInGetDevCaps()列出设备,但有些电脑上只显示品牌名称,没有“麦克风或Mic”字样。 - XBasic3000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接