Мне нужно иметь возможность направлять звук из моего приложения на все аудиовыходов системы - в частности, как встроенные динамики, так и наушники ноутбука.Я использую C # в Windows Vista / 7 и последней версии .NET Framework, и мне не нужно поддерживать старые (то есть Windows XP) ОС.
Я смог успешно использовать Core Audio API для изменения громкости активных громкоговорителей и смог перечислить и специфически манипулировать отдельными аудиоустройствами, но не смог фактически изменитьсостояние устройств, чтобы включить их.
private MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
private MMDeviceCollection audioDevices = null;
public Form1()
{
InitializeComponent();
this.defaultDevice = this.devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
AudioEndpointVolumeNotificationDelegate(AudioEndpointVolume_OnVolumeNotification);
this.audioDevices = this.devEnum.EnumerateAudioEndPoints(EDataFlow.eRender, EDeviceState.DEVICE_STATEMASK_ALL);
for (int i = 1; i < this.audioDevices.Count; i++)
{
// Doesn't work - throws exception because property is read-only:
// this.audioDevices[i].State = EDeviceState.DEVICE_STATE_ACTIVE
}
}
По сути, я ищу способ включить аудиоустройства, а не просто регулировать их громкость.Кто-нибудь знает способ сделать это?Я просматривал документацию MSDN для IMMDevice Interface , но мне трудно, поскольку он не предлагается в качестве управляемого кода, а используемая оболочка .NET не полностью его реализует.Я также открыт для предложений, которые используют совершенно другой подход, если я все еще могу сделать это с помощью C #.Спасибо!