簡體   English   中英

以編程方式更改“演示文稿顯示模式”

[英]Programmatically changing the “presentation display mode”

演示文稿顯示模式是您在使用Windows + p快捷方式時看到的模式

  1. 僅限計算機
  2. 重復
  3. 延伸
  4. 僅限投影儀

是否存在允許在這些顯示模式之間切換的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);

您可以使用EnumDisplaySettingsExChangeDisplaySettingsEx獲取和更改顯示設置:

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, &currentTopology);

此處此調用的相關來源)

這適用於C ++。 C#需要DLL導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM