你试试看
************ 方法一 *************
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;
************* 方法二 *************
Windows提供给我们两个API函数,可以动态调整显示器的分辨率, 他们是EnumDisplaySettings()
和 ChangeDisplaySettings(), 下面这个例子就是了
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;