private void button1_Click(object sender, EventArgs e) { // SendMessage( this.Handle.ToInt32() , WM_SYSCOMMAND , SC_MONITORPOWER ,2 );//DLL function //go to powersave. DISPLAY_DEVICE d = new DISPLAY_DEVICE(); d.cb = Marshal.SizeOf(d); try { for (uint id = 0; EnumDisplayDevices(null, id, ref d, 0); id++) { MessageBox.Show( String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, d.DeviceName, d.DeviceString, d.StateFlags, d.DeviceID, d.DeviceKey ) ); d.cb = Marshal.SizeOf(d); } } catch (Exception ex) { Console.WriteLine(String.Format("{0}", ex.ToString())); } GetDisplayInfo(); ddInactive.dmPosition.x = 0; ddInactive.dmPosition.y = 0; ddInactive.dmFields = DM.Position; if (DISP_CHANGE.Successful == ChangeDisplaySettingsEx(szInactiveDeviceName, ref ddInactive, IntPtr.Zero, (int)(CDSFlags.CDS_RESET | CDSFlags.CDS_UPDATEREGISTRY | CDSFlags.CDS_SET_PRIMARY), IntPtr.Zero)) { ddActive.dmPosition.x = 0; ddActive.dmPosition.y = 0; ddActive.dmPelsHeight = 0; ddActive.dmPelsWidth = 0; ddActive.dmFields = DM.PelsHeight | DM.PelsWidth | DM.Position; ChangeDisplaySettingsEx(szActiveDeviceName, ref ddActive, IntPtr.Zero, (int)(CDSFlags.CDS_RESET | CDSFlags.CDS_UPDATEREGISTRY), IntPtr.Zero); } }
public void GetDisplayInfo() { ddActive.dmSize = (short)Marshal.SizeOf(ddActive); ddInactive.dmSize = (short)Marshal.SizeOf(ddInactive); uint iDeviceCntr = 0; DISPLAY_DEVICE dd = new DISPLAY_DEVICE(); dd.cb = Marshal.SizeOf(dd); while (EnumDisplayDevices(null, iDeviceCntr, ref dd, 0)) { DEVMODE dMode = new DEVMODE(); dMode.dmSize = (short)Marshal.SizeOf(dMode); if (EnumDisplaySettings(dd.DeviceName, ENUM_REGISTRY_SETTINGS, ref dMode)) { if (dMode.dmPelsHeight > 0 && dMode.dmPelsWidth > 0) { if ((dd.StateFlags & DisplayDeviceStateFlags.PrimaryDevice) == DisplayDeviceStateFlags.PrimaryDevice) { ddActive = dMode; szActiveDeviceName = dd.DeviceName; } else { ddInactive = dMode; szInactiveDeviceName = dd.DeviceName; } } } iDeviceCntr++; } }
static extern bool EnumDisplayDevices(string lpDevice, uint iDevNum, ref DISPLAY_DEVICE lpDisplayDevice, uint dwFlags);