앞에서 했던 질문인데 시원한 답변이 없어 여기 저기 돌아다니며 찾은 소스코드입니다.
아래 소스코드는 피시에 장착된 사운드장치를 나열하는 소스코드인데요.
아래 소스에서 나열된 사운드장치를 선택하여 더블클릭하면
해당 사운드장치가 윈도우 기본 사운드장치로 바뀌게 하고 싶은데요.
기본 사운드 장치를 바꾸는 방법을 모르겠습니다.
procedure TForm1.EnumAudioDevices;
var
dsCreateDevEnum : ICreateDevEnum;
EnumDevice : IEnumMoniker;
DeviceMoniker : IMoniker;
Data : Integer;
DevicePropBag : IPropertyBag;
DeviceName : OLEVariant;
begin
If CoCreateInstance(CLSID_SystemDeviceEnum,nil,CLSCTX_INPROC_SERVER,IID_ICreateDevEnum,dsCreateDevEnum) = S_OK then
Begin
If dsCreateDevEnum.CreateClassEnumerator(CLSID_AudioRendererCategory,EnumDevice,0) = S_OK then
Begin
EnumDevice.Reset;
While EnumDevice.Next(1,DeviceMoniker,@Data) = S_OK do
Begin
If DeviceMoniker.BindToStorage(nil,nil,IID_IPropertyBag,DevicePropBag) = NOERROR then
Begin
If DevicePropBag.Read('FriendlyName',DeviceName,nil) = NOERROR then
IF Copy(DeviceName, 1, Length('DirectSound')) = 'DirectSound' Then
ListBox1.Items.Add(Copy(DeviceName, Length('DirectSound: ') + 1, Length(DeviceName) - Length('DirectSound: ')));
DevicePropBag := nil;
End;
DeviceMoniker := nil;
End;
EnumDevice := nil;
End;
dsCreateDevEnum := nil;
End;
End;
|