c#下利用winAPI来实现扩展屏的分辨率设置、方向切换等

本文介绍了一种通过编程方式调整头显设备显示方向的方法,使用了ChangeDisplaySettingsEx函数结合DEVMODE结构体实现从横向到纵向的切换,适用于将头显作为电脑扩展屏时的显示优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、背景:头显设备连接电脑作为扩展屏使用,由于显示屏厂家的原因,拿过来初始脸上电脑的话是横向的,需要手动控制去设置成纵向,这样做成产品的话,体验比较差;

在网上找到了一种方法利用 ChangeDisplaySettingsEx配合DEVMODE结构体来实现上述功能;

            [DllImport("user32.dll")]
            public static extern bool EnumDisplayDevices(string lpDevice, int iDevNum, ref DISPLAY_DEVICE lpDisplayDevice, int dwFlags);//获取屏幕信息
            [DllImport("user32.dll")]
            public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, [In] ref DEVMODE lpDevMode, IntPtr hwnd, int dwFlags, IntPtr lParam); //设置横竖屏
            [DllImport("user32.dll", CharSet = CharSet.Unicode)]
            private static extern long SetDisplayConfig(uint numPathArrayElements,IntPtr pathArray, uint numModeArrayElements, IntPtr modeArray, uint flags);  //这个函数用于设置屏幕的复制模式、或者扩展模式;

    public struct DEVMODE
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string dmDeviceName;


            public short dmSpecVersion;
            public short dmDriverVersion;
            public short dmSize;
            public short dmDriverExtra;
            public int dmFields;
            public int dmPositionX;
            public int dmPositionY;
           // public Point dmPosition;
            public int dmDisplayOrientation;
            public int dmDisplayFixedOutput;
            public short dmColor;
            public short dmDuplex;
            public short dmYResolution;
            public short dmTTOption;
            public short dmCollate;


            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string dmFormName;


            public short dmLogPixels;
            public short dmBitsPerPel;
            public int dmPelsWidth;
            public int dmPelsHeight;
            public int dmDisplayFlags;
            public int dmDisplayFrequency;
            public int dmICMMethod;
            public int dmICMIntent;
            public int dmMediaType;
            public int dmDitherType;
            public int dmReserved1;
            public int dmReserved2;
            public int dmPanningWidth;
            public int dmPanningHeight;
        };

DEVMODE结构体,和优快云上查到的是一样的;

demo:http://download.youkuaiyun.com/detail/bossaiaboy/9407945

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值