public bool Apply() { try { Thread.Sleep(2000); try { var surroundTopologies = Paths.SelectMany(path => path.Targets) .Select(target => target.SurroundTopology) .Where(topology => topology != null) .Select(topology => topology.ToGridTopology()) .ToArray(); if (surroundTopologies.Length == 0) { var currentTopologies = GridTopology.GetGridTopologies(); if (currentTopologies.Any(topology => topology.Rows * topology.Columns > 1)) { surroundTopologies = GridTopology.GetGridTopologies() .SelectMany(topology => topology.Displays) .Select(displays => new GridTopology(1, 1, new[] { displays })) .ToArray(); } } if (surroundTopologies.Length > 0) { GridTopology.SetGridTopologies(surroundTopologies, SetDisplayTopologyFlag.MaximizePerformance); } } catch { // ignored } Thread.Sleep(19000); PathInfo.ApplyPathInfos(Paths.Select(path => path.ToPathInfo()), true, true); Thread.Sleep(9000); RefreshActiveStatus(); return(true); } catch { RefreshActiveStatus(); return(false); } }
private static void DisplayConfig() { var navigation = new Dictionary <object, Action> { { "DisplayConfig: Display Adapters", () => { ConsoleNavigation.PrintObject(PathDisplayAdapter.GetAdapters(), "PathDisplayAdapter.GetAdapters()"); } }, { "DisplayConfig: Display Sources", () => { ConsoleNavigation.PrintObject(PathDisplaySource.GetDisplaySources(), "PathDisplaySource.GetDisplaySources()"); } }, { "DisplayConfig: Display Targets", () => { ConsoleNavigation.PrintObject(PathDisplayTarget.GetDisplayTargets(), "PathDisplayTarget.GetDisplayTargets()"); } }, { "DisplayConfig: Active Paths", () => { ConsoleNavigation.PrintObject(PathInfo.GetActivePaths(), pathInfo => { ConsoleNavigation.PrintObject(pathInfo.TargetsInfo, targetInfo => { ConsoleNavigation.PrintObject(targetInfo.SignalInfo, "PathTargetInfo.SignalInfo"); }, "PathInfo.TargetsInfo", "Select a PathTargetInfo to see target signal information."); }, "PathInfo.GetActivePaths()", "Select a PathInfo to see associated targets."); } }, { "DisplayConfig: Go Saved Clone", () => { PathInfo.ApplyTopology(DisplayConfigTopologyId.Clone, true); } }, { "DisplayConfig: Go Saved Extend", () => { PathInfo.ApplyTopology(DisplayConfigTopologyId.Extend, true); } }, { "DisplayConfig: Extend All Displays", () => { var sourceId = 0u; var lastWidth = 0; var pathInfos = new List <PathInfo>(); var pathTargets = PathDisplayTarget.GetDisplayTargets().Select( target => new Tuple <Size, PathTargetInfo>( target.PreferredResolution, new PathTargetInfo( target, target.PreferredSignalMode, DisplayConfigRotation.Identity, DisplayConfigScaling.Identity))).ToList(); foreach (var targetPairs in pathTargets) { var source = new PathDisplaySource(targetPairs.Item2.DisplayTarget.Adapter, sourceId); pathInfos.Add(new PathInfo(source, new Point(lastWidth, 0), targetPairs.Item1, DisplayConfigPixelFormat.PixelFormat32Bpp, new[] { targetPairs.Item2 })); lastWidth += targetPairs.Item1.Width; sourceId++; } PathInfo.ApplyPathInfos(pathInfos.ToArray()); } }, { "DisplayConfig: Clone All Compatible Displays Together", () => { var pathTargets = new Dictionary <Tuple <Size, PathDisplayAdapter>, List <PathTargetInfo> >(); foreach (var target in PathDisplayTarget.GetDisplayTargets()) { var key = new Tuple <Size, PathDisplayAdapter>(target.PreferredResolution, target.Adapter); if (!pathTargets.ContainsKey(key)) { pathTargets.Add(key, new List <PathTargetInfo>()); } pathTargets[key].Add(new PathTargetInfo( target, target.PreferredSignalMode, DisplayConfigRotation.Identity, DisplayConfigScaling.Identity)); } var pathInfos = new List <PathInfo>(); var sourceId = 0u; var lastWidth = 0; foreach (var targetPairs in pathTargets.OrderByDescending(pair => pair.Value.Count)) { var source = new PathDisplaySource(targetPairs.Key.Item2, sourceId); pathInfos.Add(new PathInfo(source, new Point(lastWidth, 0), targetPairs.Key.Item1, DisplayConfigPixelFormat.PixelFormat32Bpp, targetPairs.Value.ToArray())); lastWidth += targetPairs.Key.Item1.Width; sourceId++; } PathInfo.ApplyPathInfos(pathInfos.ToArray()); } }, { "DisplayConfig: Disable All Except Primary Path", () => { var pathInfos = PathInfo.GetActivePaths(); PathInfo.ApplyPathInfos(new[] { pathInfos.First(info => info.IsGDIPrimary) }); } } }; ConsoleNavigation.PrintNavigation(navigation, "DisplayConfig functions", "Select a DisplayConfig sample."); }