zoukankan      html  css  js  c++  java
  • 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(614);
          
    this.ClientSize = new System.Drawing.Size(292273);
          
    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);
        }

      }

    }
  • 相关阅读:
    Tomcat单机多实例部署
    通过Zabbix监控Tomcat单机多实例
    Swarm容器集群管理(超详细)
    15、基于consul+consul-template+registrator+nginx实现自动服务发现
    14、Docker监控方案(Prometheus+cAdvisor+Grafana)
    创建python虚拟环境
    Linux系统基础优化及常用命令
    Linux常用命令--用户管理,文件权限,打包命令等
    Linux--CentOS7使用firewalld打开关闭防火墙与端口
    vim
  • 原文地址:https://www.cnblogs.com/wy/p/209573.html
Copyright © 2011-2022 走看看