procedure DetachDisplay;
var
FoundSecondaryDisp: Boolean;
DispNum: DWORD;
DisplayDevice: _DISPLAY_DEVICEA;
Result: Cardinal;
szTemp: array[0..199] of AnsiChar;
i: Integer;
defaultMode: _devicemodeA;
DEVMODE,ln: _devicemodeA;
begin
// initialize DisplayDevice
ZeroMemory(@DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb := sizeof(DisplayDevice);
// get all display devices
DispNum := 0;
while (EnumDisplayDevices(nil, DispNum, DisplayDevice, 0)) do
begin
ZeroMemory(@defaultMode, sizeof(DEVMODE));
defaultMode.dmSize := sizeof(DEVMODE);
if not EnumDisplaySettings(@DisplayDevice.DeviceName[0], 1, defaultMode) then
ShowMessage('Store default failed');
if (DisplayDevice.StateFlags and DISPLAY_DEVICE_ATTACHED_TO_DESKTOP > 0) and (DisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0) then
begin
ZeroMemory(@DEVMODE, sizeof(DEVMODE));
DEVMODE.dmSize := sizeof(DEVMODE);
DEVMODE.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL or DM_POSITION or DM_DISPLAYFREQUENCY or DM_DISPLAYFLAGS;
Result := ChangeDisplaySettingsEx(@DisplayDevice.DeviceName[0], DEVMODE, 0, CDS_UPDATEREGISTRY, nil);
ChangeDisplaySettings(DEVMODE, 0);
end;
ZeroMemory(@DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb := sizeof(DisplayDevice);
inc(DispNum);
end;
end;
var
FoundSecondaryDisp: Boolean;
DispNum: DWORD;
DisplayDevice: _DISPLAY_DEVICEA;
Result: Cardinal;
szTemp: array[0..199] of AnsiChar;
i: Integer;
defaultMode: _devicemodeA;
DEVMODE,ln: _devicemodeA;
begin
// initialize DisplayDevice
ZeroMemory(@DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb := sizeof(DisplayDevice);
// get all display devices
DispNum := 0;
while (EnumDisplayDevices(nil, DispNum, DisplayDevice, 0)) do
begin
ZeroMemory(@defaultMode, sizeof(DEVMODE));
defaultMode.dmSize := sizeof(DEVMODE);
if not EnumDisplaySettings(@DisplayDevice.DeviceName[0], 1, defaultMode) then
ShowMessage('Store default failed');
if (DisplayDevice.StateFlags and DISPLAY_DEVICE_ATTACHED_TO_DESKTOP > 0) and (DisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0) then
begin
ZeroMemory(@DEVMODE, sizeof(DEVMODE));
DEVMODE.dmSize := sizeof(DEVMODE);
DEVMODE.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL or DM_POSITION or DM_DISPLAYFREQUENCY or DM_DISPLAYFLAGS;
Result := ChangeDisplaySettingsEx(@DisplayDevice.DeviceName[0], DEVMODE, 0, CDS_UPDATEREGISTRY, nil);
ChangeDisplaySettings(DEVMODE, 0);
end;
ZeroMemory(@DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb := sizeof(DisplayDevice);
inc(DispNum);
end;
end;