ChangeDisplaySettings
在参数DEVMODE中有一个dmDisplayFrequency 就是屏幕刷新率的。

解决方案 »

  1.   

    右击屏幕,点属性-》设置-》高级-》监视器,就在这里调了,你没理由不会。win98识别了显示器的,你就可以将刷新率设置到85Hz,它认不出,你给它设一个名牌显示器也可以骗倒它;Win2000对一些老机好象最高只能设为75Hz,比如我的586,显示器的长城的1527,装了长城的显示器驱动也只能设到75Hz。
      

  2.   

    那么什么函数可以得到显示器的最大刷新率的呢比如在1024*768下使用85HZ的刷新率800*600下可以用到100HZ的刷新率
      

  3.   

    这里有一个代码,你看看,希望有些帮助!http://www.21code.com/codebase/?pos=down&id=2013
      

  4.   

    >>那么什么函数可以得到显示器的最大刷新率的呢比如在1024*768下使用85HZ的刷新率800*600下可以用到100HZ的刷新率EnumDisplaySettings()返回的结构里面有所有的信息.
      

  5.   

    在DirectX中提供函数,就像游戏程序一样
    具体函数:SetDisplayMode
      

  6.   

    uses
      Windows, SysUtils; ... // 这个函数返回的显示刷新率是以Hz为单位的 
    function GetDisplayFrequency: Integer; 
    var
      DeviceMode: TDeviceMode; begin
      EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
      Result := DeviceMode.dmDisplayFrequency; 
    end;
      

  7.   

    to Linux2001:这贴又浮上来了~~ ^o^还没搞定?!
      

  8.   

    to Linux2001: 本来我是不想说di呀~~这里高手如云呀~经测试  wylove 的代码,完全正常!测试环境:Win2k中文版是不是你没有设置监视器---没有设置刷新率!!~~赶快溜~~~大侠来了要骂人~ :-)
      

  9.   

    我是在Win98环境下的,返回值是0
      

  10.   

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Display\0000
      

  11.   

    楼上的大哥,你讲的只是设置以后的值,但是我想要的是最匹配值,也就是800*600能否上到100Hz,1024*768能否上到85Hz
      

  12.   

    是不是你想要的:procedure GetDisplayFrequency(List: TStrings);
    var
      DeviceMode: TDeviceMode;
      Index: Integer;
    begin
      Index := 0;
      while EnumDisplaySettings(nil, Index, DeviceMode) do
      with DeviceMode do
      begin
        List.Append(Format('色深=%d,显示宽度=%d,显示高度=%d,显示频率=%d',
                    [dmBitsPerPel,dmPelsWidth,dmPelsHeight,dmDisplayFrequency]));    Inc(Index);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      GetDisplayFrequency(Memo1.Lines);
    end;