Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
 public void OnVolumeChanged(float volume, bool isMuted)
 {
     audioSession.ChangeVolumeExternal(volume);
 }