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