private void AddMonitors() { // Dispose and remove any old monitors foreach (Monitor m in monitorCollection) { m.Dispose(); } monitorCollection.Clear(); var @delegate = new NativeMethods.MonitorEnumDelegate(MonitorEnum); NativeMethods.EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, @delegate, IntPtr.Zero); Log("Number of physical monitors: {0}", monitorCollection.Count); foreach (Monitor monitor in monitorCollection) { Log("-----"); Log(monitor.Name); Log("Index: {0}", monitor.Index); Log("Physical: {0}", monitor.HPhysicalMonitor); // Only add monitor if DDC is supported if (monitor.Brightness.IsSupported) { BrightnessMenuItem newMenuItem = new BrightnessMenuItem(); newMenuItem.MonitorTrackBarControl.Monitor = monitor; newMenuItem.MonitorTrackBarControl.OnSetBrightnessFailed += MonitorTrackBarControl_OnSetBrightnessFailed; contextMenu.Items.Insert(0, newMenuItem); monitor.Tag = newMenuItem; } } }
private void UpdateMonitorList() { MonitorList.Clear(); foreach (Screen screen in Screen.AllScreens) { DisplayConfiguration.PHYSICAL_MONITOR mon = DisplayConfiguration.GetPhysicalMonitors(DisplayConfiguration.GetMonitorByBounds(screen.Bounds))[0]; string Name = screen.DeviceFriendlyName(); if (String.IsNullOrEmpty(Name)) { Name = "Generic Monitor"; } DisplayConfiguration.MonitorExtremums MonExtrs; try { MonExtrs = DisplayConfiguration.GetMonitorExtremums(mon); } catch { MonExtrs = new DisplayConfiguration.MonitorExtremums() { Min = 0, Max = 0 }; } MonitorList.Add(new MONITOR(Name, mon, MonExtrs.Min, MonExtrs.Max)); } Monitor_List_Combobox.ItemsSource = MonitorList; Monitor_List_Combobox.SelectedItem = MonitorList[0]; CurrentMonitor = MonitorList[0]; }