Пример #1
0
        private RemoteControlVolumes GetVolumeIO()
        {
            RemoteControlVolumes volumes = new RemoteControlVolumes();

            foreach (MMDevice dev in GetListOfOutputDevices())
            {
                foreach (ApplicationController appOut in GetApplicationsMixer(dev))
                {
                    ApplicationController appDev = GetDeviceController(dev);
                    RemoteControlVolume   audio  = new RemoteControlVolume();
                    audio.name   = appOut.processName;
                    audio.volume = (int)(appOut.getVolume() * 100);
                    audio.mute   = appOut.getMute();
                    audio.device = appDev.device.FriendlyName;
                    audio.output = true;
                    audio.icon   = ProcessUtils.ProcessIcon(appOut.session.GetProcessID);
                    volumes.Add(audio);
                }
            }

            foreach (MMDevice dev in GetListOfInputDevices())
            {
                RemoteControlVolume audio = new RemoteControlVolume();

                audio.name   = dev.FriendlyName;
                audio.mute   = dev.AudioEndpointVolume.Mute;
                audio.volume = (int)(dev.AudioEndpointVolume.MasterVolumeLevelScalar * 100);
                audio.device = dev.FriendlyName;
                audio.output = false;
                volumes.Add(audio);
            }

            return(volumes);
        }
Пример #2
0
        private string GetStringSha256Hash(RemoteControlVolumes volumes)
        {
            string toCalculateHash = "";

            foreach (RemoteControlVolume volume in volumes)
            {
                toCalculateHash += volume.name;
            }

            using (var sha = new System.Security.Cryptography.SHA256Managed())
            {
                byte[] textData = System.Text.Encoding.UTF8.GetBytes(toCalculateHash);
                byte[] hash     = sha.ComputeHash(textData);
                return(BitConverter.ToString(hash).Replace("-", String.Empty));
            }
        }
Пример #3
0
        private async Task RefreshApplicationListTask()
        {
            while (true)
            {
                RemoteControlVolumes volumes = GetVolumeIO();

                string hashCalculated = GetStringSha256Hash(volumes);

                if (!hashCalculated.Equals(AudioServiceUpdate.hashUpdate))
                {
                    AudioServiceUpdate.volumes    = volumes;
                    AudioServiceUpdate.tsUpdate   = DateTime.Now.Millisecond;
                    AudioServiceUpdate.hashUpdate = hashCalculated;
                    OnIOUpdate(this, AudioServiceUpdate);
                }

                Task.Delay(RefreshApplicationListDelay);
            }
        }
        private RemoteControlData GetVolumes(RemoteControlData wsData)
        {
            RemoteControlVolumes volumes = new RemoteControlVolumes();

            VolumeOrderData[] orderVolumes = storeService.read <VolumeOrderData[]>();
            foreach (MMDevice dev in audioService.GetListOfOutputDevices())
            {
                foreach (ApplicationController appOut in audioService.GetApplicationsMixer(dev))
                {
                    ApplicationController appDev = audioService.GetDeviceController(dev);
                    RemoteControlVolume   audio  = new RemoteControlVolume();
                    audio.name   = appOut.processName;
                    audio.volume = (int)(appOut.getVolume() * 100);
                    audio.mute   = appOut.getMute();
                    audio.device = appDev.device.FriendlyName;
                    audio.output = true;
                    audio.icon   = ProcessUtils.ProcessIcon(appOut.session.GetProcessID);
                    audio.id     = audio.name + "|" + audio.device;
                    audio.order  = GetVolumeOrder(orderVolumes, audio.device + audio.name);
                    volumes.Add(audio);
                }
            }

            foreach (MMDevice dev in audioService.GetListOfInputDevices())
            {
                RemoteControlVolume audio = new RemoteControlVolume();

                audio.name   = dev.FriendlyName;
                audio.mute   = dev.AudioEndpointVolume.Mute;
                audio.volume = (int)(dev.AudioEndpointVolume.MasterVolumeLevelScalar * 100);
                audio.device = dev.FriendlyName;
                audio.output = false;
                audio.order  = GetVolumeOrder(orderVolumes, audio.device + audio.name);
                volumes.Add(audio);
            }

            wsData.data = volumes;

            return(wsData);
        }