命名空间:using System.Runtime.InteropServices;   //获取并保存当前屏幕分辨率       

        int i = Screen.PrimaryScreen.Bounds.Width;
        int j = Screen.PrimaryScreen.Bounds.Height;

        #region 修改分辨率部分
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        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 short dmOrientation;
            public short dmPaperSize;
            public short dmPaperLength;
            public short dmPaperWidth;
            public short dmScale;
            public short dmCopies;
            public short dmDefaultSource;
            public short dmPrintQuality;
            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 int dmBitsPerPel;
            public int dmPelsWidth;
            public int dmPelsHeight;
            public int dmDisplayFlags;
            public int dmDisplayFrequency;
        }
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern int ChangeDisplaySettings([In] ref DEVMODE lpDevMode, int dwFlags);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern bool EnumDisplaySettings(string lpszDeviceName, Int32 iModeNum, ref DEVMODE lpDevMode);
        void ChangeRes()
        {

            DEVMODE DevM = new DEVMODE();
            DevM.dmSize = (short)Marshal.SizeOf(typeof(DEVMODE));
            bool mybool;
            mybool = EnumDisplaySettings(null, 0, ref DevM);
            DevM.dmPelsWidth = 1024;      //设置宽

            DevM.dmPelsHeight = 768;       //设置高

            DevM.dmDisplayFrequency = 60;      //刷新频率

            DevM.dmBitsPerPel = 32;          //颜色象素

            long result = ChangeDisplaySettings(ref DevM, 0);
        }
        void FuYuan()
        {
            DEVMODE DevM = new DEVMODE();
            DevM.dmSize = (short)Marshal.SizeOf(typeof(DEVMODE));
            bool mybool;
            mybool = EnumDisplaySettings(null, 0, ref DevM);
            DevM.dmPelsWidth = i;      //恢复宽
            DevM.dmPelsHeight = j;     //恢复高
            DevM.dmDisplayFrequency = 60;         //刷新频率
            DevM.dmBitsPerPel = 32;        //颜色象素
            long result = ChangeDisplaySettings(ref DevM, 0);
        }
        #endregion

        以上写在方法外,在方法内部调用ChangeRes()

       

 posted on 2011-05-22 20:50  习惯了天亮说晚安。  阅读(722)  评论(1)    收藏  举报