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; 函数都有了,给分吧
var DeviceMode: TDeviceMode;result:integer; begin EnumDisplaySettings(nil, Cardinal(-1), DeviceMode); result:=DeviceMode.dmDisplayFrequency; showmessage(inttostr(result)+'hz'); {捕获屏幕刷新率}var DeviceMode:TDeviceMode;result,iFrequency:integer; begin iFrequency:=85; EnumDisplaySettings(nil,Cardinal(-1), DeviceMode); DeviceMode.dmDisplayFrequency:=Cardinal(iFrequency); result:=ChangeDisplaySettings(DeviceMode,CDS_UPDATEREGISTRY); end; {改变屏幕刷新率}
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 DynamicRefresh; var DeviceMode:TDeviceMode; result,iFrequency:integer; begin EnumDisplaySettings(nil, Cardinal(-1), DeviceMode); result:=DeviceMode.dmDisplayFrequency;{捕获屏幕刷新率} iFrequency:=85; EnumDisplaySettings(nil,Cardinal(-1), DeviceMode); DeviceMode.dmDisplayFrequency:=Cardinal(iFrequency); result:=ChangeDisplaySettings(DeviceMode,CDS_UPDATEREGISTRY); end; {改变屏幕刷新率}procedure TForm1.Button1Click(Sender: TObject); begin DynamicResolution(800, 600); DynamicRefresh; 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;
函数都有了,给分吧
我试了试 yuanscar(塑料树)的函数,可以改分辨率,但刷新率成60Hz了,怎么解决
DeviceMode: TDeviceMode;result:integer;
begin
EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
result:=DeviceMode.dmDisplayFrequency;
showmessage(inttostr(result)+'hz'); {捕获屏幕刷新率}var
DeviceMode:TDeviceMode;result,iFrequency:integer;
begin
iFrequency:=85;
EnumDisplaySettings(nil,Cardinal(-1), DeviceMode);
DeviceMode.dmDisplayFrequency:=Cardinal(iFrequency);
result:=ChangeDisplaySettings(DeviceMode,CDS_UPDATEREGISTRY);
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 DynamicRefresh;
var
DeviceMode:TDeviceMode;
result,iFrequency:integer;
begin
EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
result:=DeviceMode.dmDisplayFrequency;{捕获屏幕刷新率}
iFrequency:=85;
EnumDisplaySettings(nil,Cardinal(-1), DeviceMode);
DeviceMode.dmDisplayFrequency:=Cardinal(iFrequency);
result:=ChangeDisplaySettings(DeviceMode,CDS_UPDATEREGISTRY);
end; {改变屏幕刷新率}procedure TForm1.Button1Click(Sender: TObject);
begin
DynamicResolution(800, 600);
DynamicRefresh;
end;
end.
不过也想问问yuanscar(塑料树),你的这个函数为什么会将刷新率变成60Hz了呢??