多媒體播放器、語音辨識、錄音軟體啟動時,預先偵測音效卡可避免後續 API 呼叫失敗,提升使用者體驗。
uses MMSystem;
procedure TForm1.FormCreate(Sender: TObject);
var
NumDevs: Integer;
begin
NumDevs := auxGetNumDevs; { 回傳輔助音訊裝置數量 }
if NumDevs <= 0 then
Label1.Caption := '系統未偵測到音效卡'
else
Label1.Caption := Format('偵測到 %d 個輔助音訊裝置', [NumDevs]);
end;
auxGetNumDevs:回傳 輔助 (AUX) 音訊裝置 數量(如 CD 音訊、線路輸入、合成器)。若回傳 0,通常代表無音效卡或驅動未正確安裝。waveOutGetNumDevs (播放)、waveInGetNumDevs (錄音)。auxGetDevCaps/waveOutGetDevCaps 填入 TAuxCaps/TWaveOutCaps 結構,可取得製造商、產品名、支援格式等。procedure ListAudioDevices;
var
i: Integer;
Caps: TWaveOutCaps;
begin
for i := 0 to waveOutGetNumDevs - 1 do
begin
if waveOutGetDevCaps(i, @Caps, SizeOf(Caps)) = MMSYSERR_NOERROR then
Memo1.Lines.Add(Format('播放裝置 %d: %s (支援格式: %.4x)', [i, Caps.szPname, Caps.dwFormats]));
end;
end;
auxGetNumDevs 提供最輕量的音效卡存在性檢查,一行代碼即可完成。結合 waveOutGetNumDevs/waveInGetNumDevs 可全面掌握系統音訊輸入/輸出能力,為多媒體應用奠定穩健基礎。