unit Unit1;{$mode objfpc}{$H+}interface
uses Windows, SysUtils, Forms, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var Form1: TForm1;implementation {$R *.lfm}
Procedure RestoreDisplay;
var DevMode: TDeviceMode;
begin
ZeroMemory(@DevMode, SizeOf(DevMode));
DevMode.dmSize := SizeOf(DevMode);
if EnumDisplaySettings(nil, ENUM_CURRENT_SETTINGS, DevMode) then
begin
DevMode.dmDisplayOrientation := DMDO_DEFAULT;
DevMode.dmFields :=
DM_DISPLAYORIENTATION or DM_PELSWIDTH or DM_PELSHEIGHT;
ChangeDisplaySettingsEx(nil, DevMode, 0, CDS_UPDATEREGISTRY, nil);
end;
end;
Procedure TForm1.Button1Click(Sender: TObject);
var
DevMode: TDeviceMode;
W, H: LongInt;
begin
ZeroMemory(@DevMode, SizeOf(DevMode));
DevMode.dmSize := SizeOf(DevMode);
if EnumDisplaySettings(nil, ENUM_CURRENT_SETTINGS, DevMode) then
begin
W := DevMode.dmPelsWidth;
H := DevMode.dmPelsHeight;
DevMode.dmFields :=
DM_DISPLAYORIENTATION or DM_PELSWIDTH or DM_PELSHEIGHT;
DevMode.dmDisplayOrientation := DMDO_270;
DevMode.dmPelsWidth := H;
DevMode.dmPelsHeight := W;
ChangeDisplaySettingsEx(nil, DevMode, 0, CDS_UPDATEREGISTRY, nil);
Sleep(1500);
DevMode.dmDisplayOrientation := DMDO_180;
DevMode.dmPelsWidth := W;
DevMode.dmPelsHeight := H;
ChangeDisplaySettingsEx(nil, DevMode, 0, CDS_UPDATEREGISTRY, nil);
Sleep(1500);
DevMode.dmDisplayOrientation := DMDO_90;
DevMode.dmPelsWidth := H;
DevMode.dmPelsHeight := W;
ChangeDisplaySettingsEx(nil, DevMode, 0, CDS_UPDATEREGISTRY, nil);
Sleep(1500);
DevMode.dmDisplayOrientation := DMDO_DEFAULT;
DevMode.dmPelsWidth := W;
DevMode.dmPelsHeight := H;
ChangeDisplaySettingsEx(nil, DevMode, 0, CDS_UPDATEREGISTRY, nil);
//RestoreDisplay; //Redundant... for safety only
end;
end;
end.