![example image](https://istack.dev59.com/cspGe.webp)
SetDisplayConfig
函数,但是失败了。使用下面的命令可以将主显示器克隆到所有连接的显示器:SetDisplayConfig(0, null, 0, null,
SetDisplayConfigFlags.SDC_TOPOLOGY_CLONE | SetDisplayConfigFlags.SDC_APPLY);
很不幸,我需要复制次要监视器!
我在问题如何制作克隆或扩展模式中找到了另一种方法。但我无法让它工作,以将不同显示的源设置为相同的参考。
SetDisplayConfig
函数,但是失败了。使用下面的命令可以将主显示器克隆到所有连接的显示器:SetDisplayConfig(0, null, 0, null,
SetDisplayConfigFlags.SDC_TOPOLOGY_CLONE | SetDisplayConfigFlags.SDC_APPLY);
很不幸,我需要复制次要监视器!
我在问题如何制作克隆或扩展模式中找到了另一种方法。但我无法让它工作,以将不同显示的源设置为相同的参考。
Windows 7 工作解决方案:
要在两个(或更多)连接设备之间克隆/复制桌面,您只需要执行以下操作:
共享要复制的所有“PathInfoArray”项的“sourceInfo.id”和“sourceInfo.modeInfoIdx”。例如:将显示器“索引1”复制到索引为“2”和“3”的显示器上:
SetDisplayConfig()
如果要在两个或多个显示器之间扩展显示(如果显示器已经被克隆),则会更加复杂:
将 PathInfoArray 扩展到其中一个克隆显示器,以指向附加的“SourceModeInfo”项:
SetDisplayConfig()
这只适用于Win7。
在 Windows 10 RS1 及更高版本中,SetDisplayConfig() 将失败并显示无效参数。 我不确定原因,但我注意到在 Windows 10 下,“ModeInfo.adapterId”(低部和高部)在每次重启时都会更改。此外,通过“Windows 设置 -> 显示”进行复制/扩展时,适配器也会更改。因此,我认为在 Windows 10 下,您还需要调整 PathModeInfoArray 和 SourceModeInfoArray 的适配器 ID。
目前的问题是:我不知道如何获得正确的适配器 ID 来解决这个问题。如果有人对在 Windows 10 下解决此问题有答案/提示,我将非常感激。(我需要在 Windows 10 上找到可行的解决方案:-()
先更改主显示器,然后再使用SetDisplayConfig()如何?
使用CDS_SET_PRIMARY的ChangeDisplaySettingsEx https://msdn.microsoft.com/en-us/library/windows/desktop/dd183413(v=vs.85).aspx
然后调用SetDisplayConfig进行克隆。