如何修改显示器分辨率

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);
    }
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值