首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MultiMonitorSetup:以编程方式在辅助监视器之间复制桌面

MultiMonitorSetup:以编程方式在辅助监视器之间复制桌面
EN

Stack Overflow用户
提问于 2017-08-21 09:02:30
回答 3查看 1.7K关注 0票数 4

我想以编程方式在以下两种模式之间切换:

我已经尝试使用SetDisplayConfig函数,但失败了。使用以下命令,可以将主监视器克隆到所有附加的显示器:

代码语言:javascript
运行
复制
SetDisplayConfig(0, null, 0, null, 
    SetDisplayConfigFlags.SDC_TOPOLOGY_CLONE | SetDisplayConfigFlags.SDC_APPLY);

不幸的是,我需要复制辅助监视器!

我发现了另一种质疑How to make clone or extended mode的方法。但我无法将不同显示的源设置为相同的引用。

EN

回答 3

Stack Overflow用户

发布于 2017-09-11 13:13:54

Windows 7:工作解决方案:

要在两个(或更多)连接的设备之间克隆/复制桌面,只需:

  1. QueryDisplayConfig()
  2. 共享所有‘PathInfoArray’的'sourceInfo.id‘和'sourceInfo.modeInfoIdx’--您想要复制桌面的项目。例如,重复显示“Index 1”以显示索引'2‘和’3':
代码语言:javascript
运行
复制
- 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

  1. SetDisplayConfig()

要在两个或多个显示器之间扩展显示(如果是克隆显示的话),则要复杂一些:

  1. QueryDisplayConfig()
  2. 在“SourceModeInfoArray”中添加一个带有SourceModeInfo 'Source‘foreach额外克隆显示的“infoType”项:如果配置了两个显示,您还需要一个额外的“SourceModeInfo”项(如果三个是克隆的=> 2项,等等)
  3. 为其中一个克隆显示扩展PathInfoArray以指向附加的“SourceModeInfo”项:
代码语言:javascript
运行
复制
- PathInfoArray[2].sourceInfo.id = AddItem.sourceInfo.id;
- PathInfoArray[2].sourceInfo.modeInfoIdx = AddItem.sourceInfo.modeInfoIdx;

  1. SetDisplayConfig()

这只适用于Win7。

在Windows 10 RS1上,SetDisplayConfig()将在无效参数的情况下失败。我不太清楚为什么,但我意识到在Windows10下,“ModeInfo.adapterId”(低部分和高部分)在每次重新启动时都会发生变化。当您通过“Windows ->显示”复制/扩展时,适配器将发生更改。这就是为什么我相信在Windows 10下,您也必须调整PathModeInfoArray和SourceModeInfoArray的适配器。

现在的问题是:我不知道如何获得正确的适配器id。如果有人在windows 10下找到解决这个问题的答案/提示,我将非常感激。(我需要一个windows 10的工作解决方案:-( )

票数 4
EN

Stack Overflow用户

发布于 2017-08-21 09:09:44

首先更改主显示器,然后更改SetDisplayConfig()如何?

ChangeDisplaySettingsEx与CDS_SET_PRIMARY https://msdn.microsoft.com/en-us/library/windows/desktop/dd183413(v=vs.85).aspx

然后你打电话给SetDisplayConfig克隆。

票数 1
EN

Stack Overflow用户

发布于 2018-10-03 12:23:49

关于在win 10上复制多个监视器的整个故事与将目标监视器的x和y位置设置为源监视器中的位置有关。因此,首先:

  • 检查所有路径的列表,并为源和目标监视器查找索引(最好只使用那些活动的)。
  • 从源监视器(从模式数组-即DISPLAYCONFIG_MODE_INFO)获取x和y位置
  • 设置从源获取的目标监视器x和y位置
  • 创建只包含活动路径的新显示路径数组(很容易将上面的活动数组放入新的路径)。
  • 使用新路径数组和现有模式调用SetDisplayConfig (考虑模式和路径数组的大小)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45793131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档