private static void addSessionsForEndpoint(List <MyAudioSession> sessionList, MMDevice endpoint) { var sessions = endpoint.AudioSessionManager.Sessions; for (int i = 0; i < sessions.Count; i++) { var audioSession = new MyAudioSession(); audioSession.AudioSessionControl = sessions[i]; var processID = (int)audioSession.AudioSessionControl.GetProcessID; var process = Process.GetProcessById(processID); var FriendlyName = process.ProcessName; audioSession.FriendlyName = FriendlyName; if (sessionList.Exists(a => a.AudioSessionControl.GetProcessID == processID)) { audioSession.FriendlyName += " (@" + endpoint.DeviceFriendlyName + ")"; } if (processID > 0) // && !sessionList.Exists(a => a.AudioSessionControl.GetProcessID == processID)) { // Extract and store icon try { Icon ico = Icon.ExtractAssociatedIcon(process.MainModule.FileName); BitmapSource iconImage = Imaging.CreateBitmapSourceFromHIcon(ico.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); audioSession.IconImage = iconImage; } catch { } // Init Volume audioSession.ChangeVolumeExternal(audioSession.AudioSessionControl.SimpleAudioVolume.Volume); audioSession.AudioSessionControl.RegisterEventClient(new MyEventHandler(audioSession)); sessionList.Add(audioSession); } } }
public void OnVolumeChanged(float volume, bool isMuted) { audioSession.ChangeVolumeExternal(volume); }