以编程方式更改“表示显示模式”
本文关键字:显示 模式 表示 编程 方式更 | 更新日期: 2023-09-27 18:15:45
表示显示模式是您使用Windows+p快捷方式时看到的模式:
- 电脑只有
- 复制
- 投影仪只
我想以编程方式在监视器和HDMI电视之间切换(并同时做一堆其他事情,因此Windows+p不有用),但我撞上了砖墙。
如果EnumDisplaySettingsEx和ChangeDisplaySettingsEx函数不适合你,你也可以使用这个:
private void SetDisplayMode(DisplayMode mode)
{
var proc = new Process();
proc.StartInfo.FileName = "DisplaySwitch.exe";
switch (mode)
{
case DisplayMode.External:
proc.StartInfo.Arguments = "/external";
break;
case DisplayMode.Internal:
proc.StartInfo.Arguments = "/internal";
break;
case DisplayMode.Extend:
proc.StartInfo.Arguments = "/extend";
break;
case DisplayMode.Duplicate:
proc.StartInfo.Arguments = "/clone";
break;
}
proc.Start();
}
enum DisplayMode
{
Internal,
External,
Extend,
Duplicate
}
这将根据所需的配置使用不同的参数调用DisplaySwitcher。因此,可以调用:
SetDisplayMode(DisplayMode.Extend);
可以使用SetDisplayConfig()设置桌面显示模式如:
SetDisplayConfig(0, NULL, 0, NULL, SDC_TOPOLOGY_EXTERNAL | SDC_APPLY);
您可以使用QueryDisplayConfig()检索当前显示模式。如:
DISPLAYCONFIG_TOPOLOGY_ID currentTopology;
QueryDisplayConfig(QDC_DATABASE_CURRENT, &PathArraySize, PathArray, &ModeArraySize, ModeArray, ¤tTopology);
(此调用的相关来源)
这是c++的。c#需要导入DLL
您可以使用EnumDisplaySettingsEx和ChangeDisplaySettingsEx获取和更改显示设置:
ChangeDisplaySettingsEx函数用于修改指定显示设备到指定图形模式。
检查此Codeproject项目和此Stackoverflow问题以获取示例代码