改变分辨率:
var
  DevMode:TDeviceMode;
  begin
    Result:=EnumDisplaySettings(nil,0,DevMode);
    if Result then
    begin
      DevMode.dmFields:=DM_COLOR or DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_COLOR;
      DevMode.dmPelsWidth:=X;
      DevMode.dmPelsHeight:=Y;
      DevMode.dmBitsPerPel:=24;
      Result:=ChangeDisplaySettings(DevMode,0)=DISP_CHANGE_SUCCESSFUL;
    end;function GetDisplayFrequency: Integer;//得到刷新率在Win2000下成功
var
  DeviceMode: TDeviceMode;
begin
  EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
  Result := DeviceMode.dmDisplayFrequency;
end;procedure ChangeDisplayFrequency(iFrequency:Integer);//更改刷新率,在Win2000下成功
var
  DeviceMode: TDeviceMode;
begin
  EnumDisplaySettings(nil,Cardinal(-1), DeviceMode);
  DeviceMode.dmDisplayFrequency:=Cardinal(iFrequency);
  ChangeDisplaySettings(DeviceMode,CDS_UPDATEREGISTRY);
end;

解决方案 »

  1.   

    我将你的代码拷如我的button的click事件中不能运行啊,能不能更具体一点,愿再加分。
      

  2.   

    coolcontrol控件组用过没有?
    去下一个里面有一个cooldesktop控件,非常方便,可改分辨率,背景,可改桌面上的文件……。比如要改分辨率的话用下面的一条语句就可以实现了:
    CoolDesktop1.DisplayResolution := dr800x600//给分
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      dev: DEVMODE;
      x, y: Integer;
    begin
      // Get Screen Resolution
      x := GetSystemMetrics(SM_CXSCREEN);
      y := GetSystemMetrics(SM_CYSCREEN);
      Edit1.Text := IntToStr(x) + ':' + IntToStr(y);
      // Change Screen Resolution
      EnumDisplaySettings(nil, 0, dev);
      dev.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
      dev.dmPelsWidth := 800;
      dev.dmPelsHeight := 600;
      ChangeDisplaySettings(dev, 0);
    end;
      

  4.   

    //**************************************************//
    //*函数名称:CheckSystemDisplay                    *//
    //*函数功能:返回当前系统分辩率                    *//
    //*创建信息:2002年8月8日  9:20                   *//
    //**************************************************//
    Function CheckSystemDisplay:PChar;Stdcall;
    var
      x,y:LongInt;
      a,b:String;
    begin
      x:=GetSystemMetrics(SM_CXSCREEN);
      System.Str(x,a);
      y:=GetSystemMetrics(SM_CYSCREEN);
      System.Str(y,b);
      Result:=PChar('当前显示器分辨率为:'+a+' X '+b);
    end;//**************************************************//
    //*函数名称:SetSystemDisplay                      *//
    //*函数功能:设置当前系统分辩率                    *//
    //*创建信息:2002年8月8日  9:20                   *//
    //**************************************************//
    procedure SetSystemDisplay(var W, H: Integer);
    var
      DevMode: TDevMode;
    begin
      if EnumDisplaySettings(nil,0,DevMode) then begin
        with DevMode do begin
          dmPelsWidth := W;
          dmPelsHeight := H;
          dmDisplayFrequency:=75;
          dmFields := DM_DISPLAYFREQUENCY or DM_PELSWIDTH or DM_PELSHEIGHT;
        end;
        ChangeDisplaySettings(DevMode,0);
      end;
    end;
      

  5.   

    如何给您呀?我是第三次使用CSDN,不知如何给分请告诉我!
      

  6.   

    www.51delphi.com 上面有重新开个帖子,标题上注明×××进来领分,我会进来接分的