function DynamicResolution(X, Y: word): BOOL; var lpDevMode: TDeviceMode; begin Result := EnumDisplaySettings(nil, 0, lpDevMode); if Result then begin lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT; lpDevMode.dmPelsWidth := X; lpDevMode.dmPelsHeight := Y; Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL; end end; procedure TForm1.Button1Click(Sender: TObject); begin if DynamicResolution(640, 480) then ShowMessage('Now is 640*480'); end; procedure TForm1.Button2Click(Sender: TObject); begin if DynamicResolution(800, 600) then ShowMessage('Now is 800*600'); end;
function ChangeDisplay(WResolution, HResolution, Depth: DWORD) : Boolean; var i: Integer; DevMode: TDevMode; begin Result := False; i:=0; while EnumDisplaySettings(nil,i,DevMode) do begin with DevMode do begin if (dmPelsWidth = WResolution) and (dmPelsHeight = HResolution) and (dmBitsPerPel = Depth) then if ChangeDisplaySettings(DevMode,CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL then begin Result := True; Break; end; Inc(i); end; end; end;
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if DynamicResolution(640, 480) then
ShowMessage('Now is 640*480');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if DynamicResolution(800, 600) then
ShowMessage('Now is 800*600');
end;
var
i: Integer;
DevMode: TDevMode;
begin
Result := False;
i:=0;
while EnumDisplaySettings(nil,i,DevMode) do begin
with DevMode do begin
if (dmPelsWidth = WResolution) and
(dmPelsHeight = HResolution) and
(dmBitsPerPel = Depth) then
if ChangeDisplaySettings(DevMode,CDS_UPDATEREGISTRY) =
DISP_CHANGE_SUCCESSFUL then begin
Result := True;
Break;
end;
Inc(i);
end;
end;
end;