Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

ChangeDisplaySettingsEx (user32)
 
.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern int ChangeDisplaySettingsEx(string lpszDeviceName,
   ref DEVMODE lpDevMode, IntPtr hwnd, uint dwflags, IntPtr lParam);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

To change the postion of a secondary device it is very important to use dmPositionX and dmPositionY from DEVMODE (see structs).

First i tried it with a PointL struct dmPosition.x and dmPosition.y until i luckily found this page:

http://msdn2.microsoft.com/en-us/library/aa719104(vs.71).aspx

Sample Code:

DISPLAY_DEVICE d = new DISPLAY_DEVICE();
DEVMODE dm = new DEVMODE();
d.cb = Marshal.SizeOf(d);
int deviceID=1; // This is only for my device setting. Go through the whole EnumDisplayDevices to find your device  
EnumDisplayDevices(null,deviceID, ref  d, 0); //
EnumDisplaySettings(d.DeviceName, 0, ref dm);
dm.dmPelsWidth = 1024;
dm.dmPelsHeight = 768;
dm.dmPositionX = Screen.PrimaryScreen.Bounds.Right;
dm.dmFields = DM_POSITION | DM_PELSWIDTH | DM_PELSHEIGHT;
ChangeDisplaySettingsEx(d.DeviceName, ref dm, IntPtr.Zero, CDS_UPDATEREGISTRY, IntPtr.Zero);

Return values:

public const long DISP_CHANGE_SUCCESSFUL =0;

public const long DISP_CHANGE_RESTART =1;

public const long DISP_CHANGE_FAILED =-1;

public const long DISP_CHANGE_BADMODE =-2;

public const long DISP_CHANGE_NOTUPDATED =-3;

public const long DISP_CHANGE_BADFLAGS =-4;

public const long DISP_CHANGE_BADPARAM =-5;

public const long DISP_CHANGE_BADDUALVIEW =-6;

Constants for dmFields:

public const int DM_ORIENTATION = 0x00000001;

public const int DM_PAPERSIZE = 0x00000002;

public const int DM_PAPERLENGTH = 0x00000004;

public const int DM_PAPERWIDTH = 0x00000008;

public const int DM_SCALE = 0x00000010;

public const int DM_POSITION = 0x00000020;

public const int DM_NUP = 0x00000040;

public const int DM_DISPLAYORIENTATION = 0x00000080;

public const int DM_COPIES = 0x00000100;

public const int DM_DEFAULTSOURCE = 0x00000200;

public const int DM_PRINTQUALITY = 0x00000400;

public const int DM_COLOR = 0x00000800;

public const int DM_DUPLEX = 0x00001000;

public const int DM_YRESOLUTION = 0x00002000;

public const int DM_TTOPTION = 0x00004000;

public const int DM_COLLATE = 0x00008000;

public const int DM_FORMNAME = 0x00010000;

public const int DM_LOGPIXELS = 0x00020000;

public const int DM_BITSPERPEL = 0x00040000;

public const int DM_PELSWIDTH = 0x00080000;

public const int DM_PELSHEIGHT = 0x00100000;

public const int DM_DISPLAYFLAGS = 0x00200000;

public const int DM_DISPLAYFREQUENCY = 0x00400000;

public const int DM_ICMMETHOD = 0x00800000;

public const int DM_ICMINTENT = 0x01000000;

public const int DM_MEDIATYPE = 0x02000000;

public const int DM_DITHERTYPE = 0x04000000;

public const int DM_PANNINGWIDTH = 0x08000000;

public const int DM_PANNINGHEIGHT = 0x10000000;

public const int DM_DISPLAYFIXEDOUTPUT = 0x20000000;

Alternative Managed API:

Do you know one? Please contribute it!

Documentation

Йоу!

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Find References
Show Printable Version
Revisions