C# MultiMonitorSetup:以编程方式在辅助监视器之间复制桌面
我想以编程方式在以下两种模式之间切换: 我已经尝试使用该函数,但失败了。使用以下命令,可以将主监视器克隆到所有连接的显示器上:C# MultiMonitorSetup:以编程方式在辅助监视器之间复制桌面,c#,.net,winapi,multiple-monitors,mirror,C#,.net,Winapi,Multiple Monitors,Mirror,我想以编程方式在以下两种模式之间切换: 我已经尝试使用该函数,但失败了。使用以下命令,可以将主监视器克隆到所有连接的显示器上: SetDisplayConfig(0, null, 0, null, SetDisplayConfigFlags.SDC_TOPOLOGY_CLONE | SetDisplayConfigFlags.SDC_APPLY); 不幸的是,我需要复制辅助监视器 我找到了另一个有问题的方法。但我无法将不同显示的源设置为同一引用。先更改主显示,然后再更改SetDis
SetDisplayConfig(0, null, 0, null,
SetDisplayConfigFlags.SDC_TOPOLOGY_CLONE | SetDisplayConfigFlags.SDC_APPLY);
不幸的是,我需要复制辅助监视器
我找到了另一个有问题的方法。但我无法将不同显示的源设置为同一引用。先更改主显示,然后再更改SetDisplayConfig()如何 更改显示设置CD的性别\u设置\u主要
然后调用SetDisplayConfig进行克隆。Windows 7的工作解决方案: 要在两个(或多个)连接的设备之间克隆/复制桌面,您只需执行以下操作:
- PathInfoArray[2]。sourceInfo.id=PathInfoArray[1]。sourceInfo.id
- PathInfoArray[2]。sourceInfo.modeInfoIdx=PathInfoArray[1]。sourceInfo.modeInfoIdx
- PathInfoArray[3]。sourceInfo.id=PathInfoArray[1]。sourceInfo.id
- PathInfoArray[3]。sourceInfo.modeInfoIdx=PathInfoArray[1]。sourceInfo.modeInfoIdx
要在两个或多个显示器之间扩展显示器(如果克隆了显示器),则要稍微复杂一些:
- PathInfoArray[2]。sourceInfo.id=AddItem.sourceInfo.id李>
- PathInfoArray[2].sourceInfo.modeInfoIdx=AddItem.sourceInfo.modeInfoIdx李>
在Windows 10 RS1及以后的版本中,SetDisplayConfig()将失败,参数无效。我不太清楚原因,但我认识到在Windows10下,每次重新启动时“ModeInfo.adapterId”(低部分和高部分)都会发生变化。此外,当您通过“Windows设置->显示”复制/扩展时,适配器会发生更改。 这就是为什么我认为在Windows 10下,还必须调整PathModeInfoArray和SourceModeInfoArray的适配器ID
现在的问题是:我不知道如何获得正确的适配器id。如果有人能在windows 10下解决此问题,我将不胜感激。(我需要一个适用于windows 10的工作解决方案:-()在win 10上复制多个监视器的整个过程与将目标监视器的x和y位置设置为源监视器中的位置有关。 因此,首先:
- 浏览所有路径的列表,找到源和目标监视器的索引(最好只取那些活动的)
- 从源监视器获取x和y位置(从模式数组-即DISPLAYCONFIG\u mode\u INFO)
- 设置从源获取的目标监视器x和y位置
- 创建只包含活动路径的新显示路径数组(很容易将上层活动数组放入新的显示路径数组中)
- 使用新路径数组和现有模式调用SetDisplayConfig(考虑模式和路径数组的大小