コード例 #1
0
        //Get default audio device mute status
        public static bool AudioMuteGetStatus(bool inputDevice)
        {
            try
            {
                IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator) new MMDeviceEnumerator();
                IMMDevice.IMMDevice deviceItem       = null;
                if (!inputDevice)
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
                }
                else
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eCapture, ERole.eMultimedia);
                }

                //Get the audio device volume endpoint
                deviceItem.Activate(typeof(IAudioEndpointVolume).GUID, 0, IntPtr.Zero, out object deviceActivated);
                IAudioEndpointVolume audioEndPointVolume = (IAudioEndpointVolume)deviceActivated;

                //Get the current mute status
                audioEndPointVolume.GetMute(out bool muteStatus);
                return(muteStatus);
            }
            catch
            {
                //Debug.WriteLine("Failed to get mute status.");
                return(false);
            }
        }
コード例 #2
0
        //Mute default audio device
        public static void AudioUnmute(bool inputDevice)
        {
            try
            {
                IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator) new MMDeviceEnumerator();
                IMMDevice.IMMDevice deviceItem       = null;
                if (!inputDevice)
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
                }
                else
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eCapture, ERole.eMultimedia);
                }

                //Get the audio device volume endpoint
                deviceItem.Activate(typeof(IAudioEndpointVolume).GUID, 0, IntPtr.Zero, out object deviceActivated);
                IAudioEndpointVolume audioEndPointVolume = (IAudioEndpointVolume)deviceActivated;

                //Set the switched mute status
                audioEndPointVolume.SetMute(false, Guid.Empty);
                Debug.WriteLine("Unmuted audio device.");
            }
            catch
            {
                Debug.WriteLine("Failed to unmute audio device.");
            }
        }
コード例 #3
0
        //Get default audio device volume (0-100)
        public static int AudioVolumeGet(bool inputDevice)
        {
            try
            {
                IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator) new MMDeviceEnumerator();
                IMMDevice.IMMDevice deviceItem       = null;
                if (!inputDevice)
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
                }
                else
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eCapture, ERole.eMultimedia);
                }

                //Get the audio device volume endpoint
                deviceItem.Activate(typeof(IAudioEndpointVolume).GUID, 0, IntPtr.Zero, out object deviceActivated);
                IAudioEndpointVolume audioEndPointVolume = (IAudioEndpointVolume)deviceActivated;

                //Get the audio device volume
                audioEndPointVolume.GetMasterVolumeLevelScalar(out float volumeLevelCurrentFloat);
                int volumeLevelInt = Convert.ToInt32(volumeLevelCurrentFloat * 100);

                //Debug.WriteLine("Current volume: " + volumeLevelInt + "%");
                return(volumeLevelInt);
            }
            catch
            {
                Debug.WriteLine("Failed to get default audio device volume.");
                return(-1);
            }
        }
コード例 #4
0
        //Get the current default audio device
        public static AudioDeviceSummary GetDefaultDevice()
        {
            try
            {
                IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator) new MMDeviceEnumerator();
                IMMDevice.IMMDevice deviceItem       = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);

                //Get the audio device id
                string deviceId = deviceItem.GetId();

                //Get the audio device name
                PropertyVariant propertyVariant = new PropertyVariant();
                IPropertyStore  propertyStore   = deviceItem.OpenPropertyStore(STGM.STGM_READ);
                propertyStore.GetValue(ref PKEY_Device_FriendlyName, out propertyVariant);
                string deviceName = Marshal.PtrToStringUni(propertyVariant.pwszVal);

                return(new AudioDeviceSummary()
                {
                    Identifier = deviceId, Name = deviceName
                });
            }
            catch
            {
                Debug.WriteLine("Failed to get the default audio device.");
                return(null);
            }
        }
コード例 #5
0
        //Up default audio device volume (0-100)
        public static bool AudioVolumeUp(int targetStep, bool inputDevice)
        {
            try
            {
                IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator) new MMDeviceEnumerator();
                IMMDevice.IMMDevice deviceItem       = null;
                if (!inputDevice)
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
                }
                else
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eCapture, ERole.eMultimedia);
                }

                //Get the audio device volume endpoint
                deviceItem.Activate(typeof(IAudioEndpointVolume).GUID, 0, IntPtr.Zero, out object deviceActivated);
                IAudioEndpointVolume audioEndPointVolume = (IAudioEndpointVolume)deviceActivated;

                //Get the audio device volume
                audioEndPointVolume.GetMasterVolumeLevelScalar(out float volumeLevelCurrentFloat);
                float volumeLevelFloat = volumeLevelCurrentFloat + (targetStep / 100F);

                //Check the target volume
                if (volumeLevelFloat > 1.00)
                {
                    volumeLevelFloat = 1.00F;
                }
                if (volumeLevelFloat < 0.00)
                {
                    volumeLevelFloat = 0.00F;
                }

                //Change the audio device volume
                audioEndPointVolume.SetMasterVolumeLevelScalar(volumeLevelFloat, Guid.Empty);

                Debug.WriteLine("Up volume: " + targetStep + "% / " + volumeLevelFloat);
                return(true);
            }
            catch
            {
                Debug.WriteLine("Failed to up default audio device volume.");
                return(false);
            }
        }
コード例 #6
0
        //Set default audio device volume (0-100)
        public static bool AudioVolumeSet(int targetVolume, bool inputDevice)
        {
            try
            {
                IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator) new MMDeviceEnumerator();
                IMMDevice.IMMDevice deviceItem       = null;
                if (!inputDevice)
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
                }
                else
                {
                    deviceItem = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eCapture, ERole.eMultimedia);
                }

                //Get the audio device volume endpoint
                deviceItem.Activate(typeof(IAudioEndpointVolume).GUID, 0, IntPtr.Zero, out object deviceActivated);
                IAudioEndpointVolume audioEndPointVolume = (IAudioEndpointVolume)deviceActivated;

                //Check the target volume
                if (targetVolume > 100)
                {
                    targetVolume = 100;
                }
                if (targetVolume < 0)
                {
                    targetVolume = 0;
                }

                //Set the audio device volume
                float volumeLevelFloat = targetVolume / 100F;
                audioEndPointVolume.SetMasterVolumeLevelScalar(volumeLevelFloat, Guid.Empty);

                Debug.WriteLine("Set volume: " + targetVolume + "% / " + volumeLevelFloat);
                return(true);
            }
            catch
            {
                Debug.WriteLine("Failed to set default audio device volume.");
                return(false);
            }
        }
コード例 #7
0
        //Get all the playback audio devices
        public static List <AudioDeviceSummary> ListAudioDevices()
        {
            try
            {
                List <AudioDeviceSummary> deviceListSummary = new List <AudioDeviceSummary>();
                IMMDeviceEnumerator       deviceEnumerator  = (IMMDeviceEnumerator) new MMDeviceEnumerator();
                IMMDeviceCollection       deviceCollection  = deviceEnumerator.EnumAudioEndpoints(EDataFlow.eRender, DeviceState.ACTIVE);

                uint deviceCount = deviceCollection.GetCount();
                for (uint deviceIndex = 0; deviceIndex < deviceCount; deviceIndex++)
                {
                    IMMDevice.IMMDevice deviceItem = deviceCollection.Item(deviceIndex);

                    //Get the audio device id
                    string deviceId = deviceItem.GetId();

                    //Get the audio device name
                    PropertyVariant propertyVariant = new PropertyVariant();
                    IPropertyStore  propertyStore   = deviceItem.OpenPropertyStore(STGM.STGM_READ);
                    propertyStore.GetValue(ref PKEY_Device_FriendlyName, out propertyVariant);
                    string deviceName = Marshal.PtrToStringUni(propertyVariant.pwszVal);

                    //Add device to summary list
                    deviceListSummary.Add(new AudioDeviceSummary()
                    {
                        Identifier = deviceId, Name = deviceName
                    });
                }

                return(deviceListSummary);
            }
            catch
            {
                Debug.WriteLine("Failed to get audio devices.");
                return(null);
            }
        }