Click here to Skip to main content
12,953,014 members (61,199 online)
Click here to Skip to main content
Add your own
alternative version


18 bookmarked
Posted 11 Aug 2009

Set Primary Display (ChangeDisplaySettingsEx)

, 11 Aug 2009 CPOL
Rate this:
Please Sign up or sign in to vote.
Simplified code for setting the primary display on a multi-monitor PC.


I've seen plenty of "complicated" code for setting the "primary" display in a multiple display PC environment, but never a "simple" C# version. (This code is based off plenty of samples I've seen on the web.)


This code originated out of the need to pop applications to multiple monitors during an automated start-up script (i.e., set a designated monitor as primary, start apps, then revert back to original monitor).

Using the code

The code is left raw for addition of "bells and whistles".

//manual gather - NewPrimary name ----------------------------------

ddOne.cb = Marshal.SizeOf(ddOne);
deviceID = 1;
WinApi.User_32.EnumDisplayDevices(null, deviceID, ref ddOne, 0);
string NewPrimary = ddOne.DeviceName;

WinApi.DEVMODE ndm6 = NewDevMode();
result = (WinApi.DisplaySetting_Results)WinApi.User_32.ChangeDisplaySettingsEx(NewPrimary, 
          ref ndm6, (IntPtr)null, (int)WinApi.DeviceFlags.CDS_SET_PRIMARY | 
          (int)WinApi.DeviceFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
Console.WriteLine("Action 3.2 result:" + result.ToString());


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Systems Engineer
United States United States
No Biography provided

You may also be interested in...


Comments and Discussions

SuggestionWorking VB.Net "Conversion" Pin
LostIt127823-Jan-13 16:55
memberLostIt127823-Jan-13 16:55 
GeneralRe: Working VB.Net "Conversion" Pin
LostIt127824-Feb-13 7:59
memberLostIt127824-Feb-13 7:59 
GeneralDoes not work for me. Pin
Bill Langlais2-Nov-09 13:02
memberBill Langlais2-Nov-09 13:02 
GeneralManually set monitor\display name Pin
beyonder42211-Aug-09 5:48
memberbeyonder42211-Aug-09 5:48 
GeneralRe: Manually set monitor\display name Pin
The_Mega_ZZTer11-Aug-09 6:51
memberThe_Mega_ZZTer11-Aug-09 6:51 
GeneralRe: Manually set monitor\display name Pin
dalek925-Aug-09 2:23
memberdalek925-Aug-09 2:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170525.1 | Last Updated 11 Aug 2009
Article Copyright 2009 by beyonder422
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid