代码改变世界

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

2013-06-07 17:34  观海看云  阅读(689)  评论(0编辑  收藏  举报
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);
    }
  }
}
  • C1Flexgrid不暴露任何直接的方法导出到Excel,但是你可以很容易实现的功能,使用辅助类提供了'ExcelGrid'(Silverlight)中样品,你可以只到您的项目中添加这些辅助类和使用类的方法来导出一个excel文件中的数据。C1FlexgridToExcel... 阅读全文>>
     
  • c1FlexGrid1.SaveGrid(@"c:\TEST.XLS", FileFormatEnum.Excel, FileFlags.IncludeFixedCells,Encoding.Default);第一个参数: 导出的目标文件路径,没有会创建.存在会覆盖.第二个能... 阅读全文>>
     
  • WebRequest类是.NET Framework中“请求/响应”模型的abstract基类,用于访问Internet数据。使用WebRequest类请求/响应模型的应用程序可以用协议不可知的方式从Internet请求数据,在这种方式下,应用程序处理WebRequest类的实例... 阅读全文>>
     
  • WebClient类位于System.Net命名空间下,WebClient类提供向URI标识的任何本地、Intranet或Internet资源发送数据以及从这些资源接收数据的公共方法。源代码///引用命名空间 using System.IO; using S... 阅读全文>>
     
  • C# SQLiteHelp类

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO; using System.Data; using System.Dat... 阅读全文>>
     
  • SQL Server 2008中使用DataTable作为存储过程的参数的相关知识是本文我们主要要介绍的内容,笔者在最近工作中写了几个存储过程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于split 的函数,只好自己处理,将前台数据集中的一列用逗... 阅读全文>>
     
  • C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(string money) { ... 阅读全文>>
     
  • 1. 先变量后构造函数。变量先被初始化,然后构造函数被执行2. 先静态化后实例化。当一个类被访问时,静态变量和构造函数最先被初始化.接着是对象的实例化变量和构造函数被初始化3. 先派生类后基类。对于变量和静态构造函数,派生对象在基对象之前被初始化.... 阅读全文>>
     
  • C#中的静态与非静态

    静态类 vs 普通类静态类与普通类的区别有以下几点:1)静态类无法实例化而普通类可以;2)静态类只能从System.Object基类继承;普通可以继承其它任何非static和非sealed类,但也只能继承一个类;3)静态类不能继承接口;普通类可以继承多个接口;4)静态类... 阅读全文>>
     
  • C# 杀死自已,退出子线程?

    托管线程或者是后台线程,或者是前台线程。后台线程不会使托管执行环境处于活动状态,除此之外,后台线程与前台线程是一样的。一旦所有前台线程在托管进程 (其中 .exe 文件是托管程序集)中被停止,系统将停止所有后台线程并关闭。通过设置 Thread.IsBackground 属性,可... 阅读全文>>