在 Windows 7 中有多个播放设备。
示例(在我的笔记本电脑上):扬声器和双耳机独立双耳机 SPDIF(通过 HP Dock 数字输出)
情况是这样的:我正在编写一个应用程序,让用户选择输出设备并将其保存到应用程序的设置中。因此,它为用户提供了一个组合框中所有 Directsound 设备的选择。用户选择他喜欢的一个并保存它。
我的要求是:在此列表的初始加载时,我想选择默认设备(在 Windows 7 - 控制面板 -> 声音 -> 播放选项卡中设置)
所以我枚举音频输出设备的代码是:
代码:
procedure TForm1.FillDevices;
var
AudioDevEnum: TSysDevEnum;
n: string;
i, ps: integer;
begin
AudioDevEnum := TSysDevEnum.Create(CLSID_AudioRendererCategory);
try
if AudioDevEnum.CountFilters = 0 then
Exit;
for i := 0 to AudioDevEnum.CountFilters - 1 do
begin
n := AudioDevEnum.Filters[i].FriendlyName;
ps := pos('DirectSound: ', n);
if ps <> 0 then
begin
ps := pos('Modem', n);
if ps = 0 then
begin
// Delete(n, 1, 13);
lstDevices.Items.Add(n);
end;
end;
end;
lstDevices.ItemIndex := 0;
finally
AudioDevEnum.Free;
end;
end;
获得列表后,我想检测声音控制面板中设置为“默认设备”的项目,然后选择它。这样一来,应用程序就可以第一次保存正确的设备,而无需用户执行此工作。
这可以做到吗?如何?
提前致谢。
编辑:请注意,我想选择并保存(到 INI 文件)默认设备,以便我的应用程序可以使用它来输出声音(通过 DSPack 组件)。我不想更改 Windows 设置。