函数,消息,API ,什么方式都可以
如,我的计算机的刷新率是85
怎么样才能让程序检测出刷新率是85呢?

解决方案 »

  1.   

    更改显示器分辩、刷新率
    Procedure ChangeDisplay(width,height,Frequency:integer);
    var devmode:tDevicemode;
    begin
     if  EnumDisplaySettings(nil,0,devmode)  then
      begin
        devmode.dmfields:=dm_pelswidth  OR  dm_pelsheight OR dm_DisplayFrequency;
        if (devmode.dmDisplayFrequency<>frequency) or (screen.Width<>devmode.dmPelsWidth) then
        begin
        devmode.dmpelswidth:=width; {宽度}
        devmode.dmpelsheight:=height;{高度}
        devmode.dmDisplayFrequency:=frequency;{刷新率}   ///返回一下就可以了
        ChangeDisplaySettings(devmode,0); {更改设置}
        end;
      end;
    end;
      

  2.   

    返回结果是 60 而不是85
    代码如下
    EnumDisplaySettings(nil,0,devicemode);
    label1.Caption :=intToStr(DeviceMode.dmDisplayFrequency);
      

  3.   

    var
      vDevMode: TDevMode;
    begin
      EnumDisplaySettings(nil, $FFFFFFFF, vDevMode);
      Caption := IntToStr(vDevMode.dmDisplayFrequency);
    end;
      

  4.   

    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;