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
{
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);
// should I use this line?
//static extern int ChangeDisplaySettings( [In] ref DEVMODE lpDevMode, int dwFlags);
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Size = new System.Drawing.Size(300,300);
this.Text = "Form1";
}
#endregion
static void Main()
{
Form1 r = new Form1();
r.ChangeRes();
Application.Run(new Form1());
}
void ChangeRes()
{
long RetVal=0;
DEVMODE dm = new DEVMODE();
dm.dmPelsWidth = 600;
dm.dmPelsHeight= 800;
dm.dmFields = dm.dmPelsWidth | dm.dmPelsHeight;
RetVal = ChangeDisplaySettings(dm, 0);
}
}
}
int RetVal=0;
DEVMODE dm = new DEVMODE();
dm.dmPelsWidth = 800;
dm.dmPelsHeight= 600;
dm.dmBitsPerPel= 24;
dm.dmDisplayFrequency= 100;
dm.dmFields = dm.dmPelsWidth | dm.dmPelsHeight | dm.dmBitsPerPel | dm.dmDisplayFrequency;
RetVal= ChangeDisplaySettings(dm, 0);
a.MB.ShowDialog(RetVal);
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
dm.dmPelsWidth = 600;
dm.dmPelsHeight= 800;
dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT
ChangeDisplaySettings(dm, 0);
const int DM_PELSWIDTH = 0x80000;
const int DM_PELSHEIGHT = 0x100000;
static extern int ChangeDisplaySettings( [In] ref DEVMODE lpDevMode, int dwFlags);
.
.
.
DEVMODE dm = new DEVMODE();
long RetVal=0;
const int DM_PELSWIDTH = 0x80000;
const int DM_PELSHEIGHT = 0x100000;
dm.dmPelsWidth = 600;
dm.dmPelsHeight= 800;
dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
RetVal = ChangeDisplaySettings(ref dm, 0);
public class Api
{
//------------------------------
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
public static extern uint SendMessage(IntPtr hWnd, uint wMsg, uint wParam, uint lParam);
//------------------------------
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct DevMode
{
const int CCHDEVICENAME = 32;
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 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;
public const int CCDEVICENAME = 32;
public const int CCFORMNAME = 32;
public const int DM_BITSPERPEL = 0x40000;
public const int DM_PELSWIDTH = 0x80000;
public const int DM_PELSHEIGHT = 0x100000;
public const int CDS_UPDATEREGISTRY = 0x00000001;
public const int CDS_TEST = 0x00000002;
public const int CDS_GLOBAL = 0x00000008;
public const int CDS_FULLSCREEN = 0x00000004;
public const int CDS_RESET = 0x40000000;
public const int DISP_CHANGE_SUCCESSFUL = 0;
public const int DISP_CHANGE_RESTART = 1;
public const int DISP_CHANGE_FAILED = -1;
public const int DISP_CHANGE_BADMODE = -2;
public const int DISP_CHANGE_NOTUPDATED = -3;
public const int DISP_CHANGE_BADFLAGS = -4;
public const int DISP_CHANGE_BADPARAM = -5;
}
//------------------------------
[DllImport("user32.dll", EntryPoint="EnumDisplaySettingsW")]
static extern int EnumDisplaySettings(string dispDevice, int modeNum, ref DevMode settings);
public static string GetDisplayModes(bool All)
{
int ENUM_CURRENT_SETTINGS = -1;
DevMode dm=new DevMode();
dm.dmSize= (short)Marshal.SizeOf(typeof(DevMode));
dm.dmDriverExtra = 0;
int ret= -1;
StringBuilder SB=new StringBuilder(50);
if(All)
{
for(int i=0; ret != 0; i++)
{
ret= EnumDisplaySettings(null, i, ref dm);
SB.Append(i+")"+dm.dmDeviceName+" "+"BpP: "+dm.dmBitsPerPel+" W: "+dm.dmPelsWidth+
" H: "+dm.dmPelsHeight+" Fr: "+dm.dmDisplayFrequency+" Flags: "+dm.dmDisplayFlags+"\n");
}
}
else
{
EnumDisplaySettings(null, ENUM_CURRENT_SETTINGS, ref dm);
SB.Append(dm.dmDeviceName+" "+"BpP: "+dm.dmBitsPerPel+" W: "+dm.dmPelsWidth+
" H: "+dm.dmPelsHeight+" Fr: "+dm.dmDisplayFrequency+" Flags: "+dm.dmDisplayFlags+"\n");
}
return SB.ToString();
}
//------------------------------
[DllImport("user32.dll", EntryPoint="ChangeDisplaySettingsA")]
static extern int ChangeDisplaySettings(ref DevMode lpDevMode, int dwFlags);
public static int ChangeDisplay(int W, int H, int ColorDepth)
{
int ret= 0;
DevMode dm = new DevMode();
EnumDisplaySettings(null, 0, ref dm);
dm.dmFields = DevMode.DM_PELSWIDTH | DevMode.DM_PELSHEIGHT | DevMode.DM_BITSPERPEL;
dm.dmPelsWidth = W;
dm.dmPelsHeight= H;
dm.dmBitsPerPel= ColorDepth;
//dm.dmDisplayFrequency= 100;
ret= ChangeDisplaySettings(ref dm, 0);//DevMode.CDS_UPDATEREGISTRY);
a.MB.ShowDialog(ret);
return ret;
}
}
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_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);
// should I use this line?
static extern int ChangeDisplaySettings( [In] ref DEVMODE lpDevMode, int dwFlags);
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Size = new System.Drawing.Size(300,300);
this.Text = "Form1";
}
#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.dmFields = DEVMODE.DM_PELSWIDTH | DEVMODE.DM_PELSHEIGHT;
RetVal = ChangeDisplaySettings(ref dm, 0);
}
}
}
Const int CDS_UPDATEREGISTRY = &H1
Const int CDS_TEST = &H4
RetVal = ChangeDisplaySettings(ref dm, CDS_UPDATEREGISTRY);