[英]Programmatically changing the “presentation display mode”
演示文稿顯示模式是您在使用Windows + p快捷方式時看到的模式 :
是否存在允許在這些顯示模式之間切換的API調用?
我想以編程方式在顯示器和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);
您可以使用EnumDisplaySettingsEx和ChangeDisplaySettingsEx獲取和更改顯示設置:
ChangeDisplaySettingsEx函數將指定顯示設備的設置更改為指定的圖形模式。
檢查此Codeproject項目和此Stackoverflow問題以獲取示例代碼
您可以使用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導入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.