public IEnumerable<DisplayHelper> Get()
        {
            var device = new DisplayDevice();
            device.cb = Marshal.SizeOf(device);

            var list = new List<DisplayHelper>();
            for (uint id = 0; NativeMethods.EnumDisplayDevices(null, id, ref device, 0); id++)
            {
                device.cb = Marshal.SizeOf(device);

                NativeMethods.EnumDisplayDevices(device.DeviceName, 0, ref device, 0);

                device.cb = Marshal.SizeOf(device);

                device.cb = Marshal.SizeOf(device);

                if (device.DeviceName.Trim().Length > 0)
                {
                    var helper = new DisplayHelper
                                 {
                                     Id = id,
                                     Name = device.DeviceString
                                 };

                    foreach (var screen in Screen.AllScreens)
                    {
                        if (device.DeviceName.Contains(screen.DeviceName))
                        {
                            var rectangle = screen.Bounds;
                            helper.PositionX = rectangle.X;
                            helper.PositionY = rectangle.Y;
                            helper.Height = rectangle.Height;
                            helper.Width = rectangle.Width;
                        }
                    }
                    list.Add(helper);
                }
            }

            return list;
        }
        public void For(int rotation, uint deviceId)
        {
            //uint deviceId = 1; // zero origin (i.e. 1 means DISPLAY2)

            var displayDevice = new DisplayDevice();
            var devMode = new Devmode();
            displayDevice.cb = Marshal.SizeOf(displayDevice);

            NativeMethods.EnumDisplayDevices(null, deviceId, ref displayDevice, 0);
            if (0 != NativeMethods.EnumDisplaySettings(
                    displayDevice.DeviceName, NativeMethods.EnumCurrentSettings, ref devMode))
            {
                int temp = devMode.dmPelsHeight;
                devMode.dmPelsHeight = devMode.dmPelsWidth;
                devMode.dmPelsWidth = temp;
            }

            devMode.dmDisplayOrientation = rotation;

            DisplayChange iRet = NativeMethods.ChangeDisplaySettingsEx(
                displayDevice.DeviceName, ref devMode, IntPtr.Zero,
                DisplaySettingsFlags.CdsUpdateregistry, IntPtr.Zero);
        }
示例#3
0
 internal static extern bool EnumDisplayDevices(
     string lpDevice, uint iDevNum, ref DisplayDevice lpDisplayDevice,
     uint dwFlags);
 internal static extern bool EnumDisplayDevices(
     string lpDevice, uint iDevNum, ref DisplayDevice lpDisplayDevice,
     uint dwFlags);