科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道C#中改变显示器的分辨率

C#中改变显示器的分辨率

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

     下面的代码实现修改显示器分辨率和刷新频率的功能:      using System;   using System.Drawing;   using System.Collections;   using System.Component

作者:中国IT实验室 来源:中国IT实验室 2007年9月28日

关键字: C# 编程

  • 评论
  • 分享微博
  • 分享邮件
  
  下面的代码实现修改显示器分辨率和刷新频率的功能:
  
  using System;
  using System.Drawing;
  using System.Collections;
  using System.ComponentModel;
  using System.Windows.Forms;
  using System.Data;
  using System.Runtime.InteropServices;
  
  namespace ScreenResolution
  {
  
  public class Form1 : System.Windows.Forms.Form
  {
  public enum DMDO
  {
  DEFAULT = 0,
  D90 = 1,
  D180 = 2,
  D270 = 3
  }
  
  [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
  struct DEVMODE
  {
  public const int DM_DISPLAYFREQUENCY = 0x400000;
  public const int DM_PELSWIDTH = 0x80000;
  public const int DM_PELSHEIGHT = 0x100000;
  private const int CCHDEVICENAME = 32;
  private const int CCHFORMNAME = 32;
  
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst=CCHDEVICENAME)]
  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 DMDO dmDisplayOrientation;
  public int dmDisplayFixedOutput;
  
  public short dmColor;
  public short dmDuplex;
  public short dmYResolution;
  public short dmTTOption;
  public short dmCollate;
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst=CCHFORMNAME)]
  public string dmFormName;
  public short dmLogPixels;
  public int 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;
  }
  
  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  //static extern int ChangeDisplaySettings( DEVMODE lpDevMode, int dwFlags);
  
  static extern int ChangeDisplaySettings( [In] ref DEVMODE lpDevMode, int dwFlags);
  private System.ComponentModel.Container components = null;
  public Form1()
  {
  InitializeComponent();
  }
  protected override void Dispose( bool disposing )
  {
  if( disposing )
  {
  if (components != null)
  {
  components.Dispose();
  }
  }
  base.Dispose( disposing );
  }
  
  #region Windows Form Designer generated code
  private void InitializeComponent()
  {
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  this.ClientSize = new System.Drawing.Size(292, 273);
  this.Text = "改变屏幕分辨率的例子";
  
  }
  #endregion
  
  static void Main()
  {
  Form1 r = new Form1();
  r.ChangeRes();
  Application.Run(new Form1());
  }
  
  void ChangeRes()
  {
  Form1 t = new Form1();
  long RetVal=0;
  DEVMODE dm = new DEVMODE();
  dm.dmSize= (short)Marshal.SizeOf(typeof(DEVMODE));
  dm.dmPelsWidth = 1024;
  dm.dmPelsHeight= 768;
  dm.dmDisplayFrequency=85;
  dm.dmFields = DEVMODE.DM_PELSWIDTH | DEVMODE.DM_PELSHEIGHT | DEVMODE.DM_DISPLAYFREQUENCY;
  RetVal = ChangeDisplaySettings(ref dm, 0);
  }
  }
  }

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件