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); }
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)); } }
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); }