void VolumeManager_NewSession(VolumeSession rpSession) { var rHostProcessID = Process.GetCurrentProcess().Id; int? rProcessID = rpSession.ProcessID; var rIsBrowserProcess = false; while (rProcessID.HasValue) using (var rManagementObject = new ManagementObject($"Win32_Process.Handle='{rProcessID.Value}'")) try { rManagementObject.Get(); rProcessID = Convert.ToInt32(rManagementObject["ParentProcessId"]); if (rProcessID == rHostProcessID) { rIsBrowserProcess = true; break; } } catch (ManagementException e) when (e.ErrorCode == ManagementStatus.NotFound) { rProcessID = null; } if (!rIsBrowserProcess) return; Volume?.Dispose(); Volume = new BrowserVolume(rpSession); VolumeManager.Instance.NewSession -= VolumeManager_NewSession; }
public BrowserVolume(VolumeSession rpSession) { r_Session = rpSession; r_IsMute = r_Session.IsMute; r_Volume = r_Session.Volume; r_Session.VolumeChanged += r => { r_IsMute = r.IsMute; r_Volume = r.Volume; OnPropertyChanged(nameof(IsMute)); OnPropertyChanged(nameof(Volume)); }; }
public void Dispose() { r_Session.Dispose(); r_Session = null; }