您是否可以将ChangeDisplaySettingsEx与多个监视器一起使用以在克隆和扩展桌面之间切换

Ben*_*Ben 5 vb6 winapi

我正在开发一个在Windows XP(嵌入式)上运行的旧版vb6应用程序,它使用ChangeDisplaySettingsEx来控制连接的监视器的分辨率.

我的任务是在安装多个监视器时找到一种方法让ChangeDisplaySettingsEx在克隆和扩展模式之间切换.

当连接第二台显示器时,它会自动在克隆模式下工作.

当我使用EnumDisplayDevices枚举可用的显示设备时,DISPLAY_DEVICE.DeviceString显示如下:

\\.\DISPLAY1\Monitor0
\\.\DISPLAY1\Monitor1
Run Code Online (Sandbox Code Playgroud)

当监视器处于扩展模式时,它们显示如下:

\\.\DISPLAY1\Monitor0
\\.\DISPLAY2\Monitor0
Run Code Online (Sandbox Code Playgroud)

我已经反复阅读过MSDN,并且对于如何调用API将模式从Clone更改为Extended,似乎没有一个可靠的答案.

我的猜测是分离第二台显示器,然后尝试找出重新连接的方法,所以我开始尝试按照http://msdn.microsoft.com/en-us/library/dd162617(v=vs.85)进行分离.).aspx但是我不能让任何这个工作.

每当我尝试解析\.\ DISPLAY1\Monitor1到ChangeDisplaySettingsEx我得到DISP_CHANGE_BADPARAM - 例如

ChangeDisplaySettingsEx(\\.\DISPLAY1\Monitor1, DevM, 0, CDS_GLOBAL Or CDS_UPDATEREGISTRY, 0)
Run Code Online (Sandbox Code Playgroud)

我真的把头发拉出来了.

有谁知道如何禁用克隆模式并使用API​​启用扩展模式?