日期:2014-05-18 浏览次数:21270 次
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace 解决分辨率 { public partial class Form1 : Form { //保存当前屏幕分辨率 int i = Screen.PrimaryScreen.Bounds.Width; int j = Screen.PrimaryScreen.Bounds.Height; public Form1() { InitializeComponent(); } [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); } private void Form1_Load(object sender, EventArgs e) { ChangeRes(); } private void button1_Click(object sender, EventArgs e) { FuYuan(); this.Close(); }