Example #1
0
 private static extern int ChangeDisplaySettingsEx(string lpszDeviceName, ref DeviceMode mode, IntPtr hwnd, uint dwflags, IntPtr lParam);
Example #2
0
        public bool Load()
        {
            if (State != MirrorState.Idle)
            {
                throw new InvalidOperationException("You may call Load only if the state is Idle");
            }

            var device     = new DisplayDevice();
            var deviceMode = new DeviceMode {
                dmDriverExtra = 0
            };

            device.CallBack         = Marshal.SizeOf(device);
            deviceMode.dmSize       = (short)Marshal.SizeOf(deviceMode);
            deviceMode.dmBitsPerPel = 24;

            if (deviceMode.dmBitsPerPel == 24)
            {
                deviceMode.dmBitsPerPel = 32;
            }

            _bitmapBpp = deviceMode.dmBitsPerPel;

            deviceMode.dmDeviceName = string.Empty;
            deviceMode.dmFields     = (DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_POSITION);
            _bitmapHeight           = deviceMode.dmPelsHeight = 768;
            _bitmapWidth            = deviceMode.dmPelsWidth = 1024;

            bool deviceFound;
            uint deviceIndex = 0;

            while (deviceFound = EnumDisplayDevices(null, deviceIndex, ref device, 0))
            {
                f.WriteLine("Display" + driverInstanceName);
                if (device.DeviceString == driverName)
                {
                    break;
                }
                deviceIndex++;
            }

            if (!deviceFound)
            {
                return(false);
            }

            driverInstanceName = device.DeviceName;

            /*
             *          _registryKey = Registry.LocalMachine.OpenSubKey(driverRegistryPath, true);
             *          if (_registryKey != null)
             *                  _registryKey = _registryKey.CreateSubKey(driverMiniportName);
             *          else
             *                  throw new Exception("Couldn't open registry key");
             *
             *          if (_registryKey != null)
             *                  _registryKey = _registryKey.CreateSubKey(driverDeviceNumber);
             *          else
             *                  throw new Exception("Couldn't open registry key");
             */
//			_registryKey.SetValue("Cap.DfbBackingMode", 0);
//			_registryKey.SetValue("Order.BltCopyBits.Enabled", 1);
            //_registryKey.SetValue("Attach.ToDesktop", 1);

            #region This was CommitDisplayChanges

            SafeChangeDisplaySettingsEx(device.DeviceName, ref deviceMode, IntPtr.Zero, CDS_UPDATEREGISTRY, IntPtr.Zero);
            SafeChangeDisplaySettingsEx(device.DeviceName, ref deviceMode, IntPtr.Zero, 0, IntPtr.Zero);

            #endregion
            f.WriteLine("Loaded" + driverInstanceName);
            State = MirrorState.Loaded;

            return(true);
        }