Programmatically changing the “presentation display mode”

后端 未结 3 1817
不知归路
不知归路 2020-12-09 00:22

The presentation display modes are those you see when using the Windows+p shortcut:

  1. Computer Only
  2. Duplicate
3条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-09 00:56

    In case the EnumDisplaySettingsEx and ChangeDisplaySettingsEx functions do not work for you, you can also use this:

            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
            }
    

    This will call the DisplaySwitcher with different arguments based on the required configuration. You can thus call:

       SetDisplayMode(DisplayMode.Extend);
    

提交回复
热议问题