C#中改變顯示器的解析度(收藏)

來源:互聯網
上載者:User

下面的代碼實現修改顯示器解析度和重新整理頻率的功能:

using System;<br />using System.Drawing;<br />using System.Collections;<br />using System.ComponentModel;<br />using System.Windows.Forms;<br />using System.Data;<br />using System.Runtime.InteropServices;</p><p>namespace ScreenResolution<br />{</p><p> public class Form1 : System.Windows.Forms.Form<br /> {<br /> public enum DMDO<br /> {<br /> DEFAULT = 0,<br /> D90 = 1,<br /> D180 = 2,<br /> D270 = 3<br /> }</p><p> [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]<br /> struct DEVMODE<br /> {<br /> public const int DM_DISPLAYFREQUENCY = 0x400000;<br /> public const int DM_PELSWIDTH = 0x80000;<br /> public const int DM_PELSHEIGHT = 0x100000;<br /> private const int CCHDEVICENAME = 32;<br /> private const int CCHFORMNAME = 32;</p><p> [MarshalAs(UnmanagedType.ByValTStr, SizeConst=CCHDEVICENAME)]<br /> public string dmDeviceName;<br /> public short dmSpecVersion;<br /> public short dmDriverVersion;<br /> public short dmSize;<br /> public short dmDriverExtra;<br /> public int dmFields;</p><p> public int dmPositionX;<br /> public int dmPositionY;<br /> public DMDO dmDisplayOrientation;<br /> public int dmDisplayFixedOutput;</p><p> public short dmColor;<br /> public short dmDuplex;<br /> public short dmYResolution;<br /> public short dmTTOption;<br /> public short dmCollate;<br /> [MarshalAs(UnmanagedType.ByValTStr, SizeConst=CCHFORMNAME)]<br /> public string dmFormName;<br /> public short dmLogPixels;<br /> public int dmBitsPerPel;<br /> public int dmPelsWidth;<br /> public int dmPelsHeight;<br /> public int dmDisplayFlags;<br /> public int dmDisplayFrequency;<br /> public int dmICMMethod;<br /> public int dmICMIntent;<br /> public int dmMediaType;<br /> public int dmDitherType;<br /> public int dmReserved1;<br /> public int dmReserved2;<br /> public int dmPanningWidth;<br /> public int dmPanningHeight;<br /> }</p><p> [DllImport("user32.dll", CharSet=CharSet.Auto)]<br /> //static extern int ChangeDisplaySettings( DEVMODE lpDevMode, int dwFlags);</p><p> static extern int ChangeDisplaySettings( [In] ref DEVMODE lpDevMode, int dwFlags);<br /> private System.ComponentModel.Container components = null;<br /> public Form1()<br /> {<br /> InitializeComponent();<br /> }<br /> protected override void Dispose( bool disposing )<br /> {<br /> if( disposing )<br /> {<br /> if (components != null)<br /> {<br /> components.Dispose();<br /> }<br /> }<br /> base.Dispose( disposing );<br /> }</p><p> #region Windows Form Designer generated code<br /> private void InitializeComponent()<br /> {<br /> this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);<br /> this.ClientSize = new System.Drawing.Size(292, 273);<br /> this.Text = "改變螢幕解析度的例子";</p><p> }<br /> #endregion</p><p> static void Main()<br /> {<br /> Form1 r = new Form1();<br /> r.ChangeRes();<br /> Application.Run(new Form1());<br /> }</p><p> void ChangeRes()<br /> {<br /> Form1 t = new Form1();<br /> long RetVal=0;<br /> DEVMODE dm = new DEVMODE();<br /> dm.dmSize= (short)Marshal.SizeOf(typeof(DEVMODE));<br /> dm.dmPelsWidth = 1024;<br /> dm.dmPelsHeight= 768;<br /> dm.dmDisplayFrequency=85;<br /> dm.dmFields = DEVMODE.DM_PELSWIDTH | DEVMODE.DM_PELSHEIGHT | DEVMODE.DM_DISPLAYFREQUENCY;<br /> RetVal = ChangeDisplaySettings(ref dm, 0);<br /> }<br /> }<br />}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.