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 の設定を変更したくありません。