delphi6,编写一个程序要改变windows的分辨率和适配器刷新率?

解决方案 »

  1.   

    TDeviceModeEnumDisplaySettings具体看帮助
      

  2.   

    刷新率:
    function GetDisplayFrequency: Integer;//得到刷新率
    var
      DeviceMode: TDeviceMode;
    begin
      EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
      Result := DeviceMode.dmDisplayFrequency;
    end;procedure ChangeDisplayFrequency(iFrequency:Integer);//更改刷新率
    var
      DeviceMode: TDeviceMode;
    begin
      EnumDisplaySettings(nil,Cardinal(-1), DeviceMode);
      DeviceMode.dmDisplayFrequency:=Cardinal(iFrequency);
      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 TForm1.Button2Click(Sender: TObject);
    begin
    if DynamicResolution(800, 600) then
    ShowMessage('Now is 800*600');
    end;
      

  3.   

    二、将机器分辨率更改为设计时的分辨率  这种方法不改变表单本身,而是将屏幕分辨率更改为与表单设计时用到的分辨率相同。它需要用到WINDOWSAPI函数EnumDisplaySettings和ChangeDisplaySettings,前者取当前显示模式信息,后者则更改显示设置,具体参数的含义请参见DELPHI帮助。设计时宽度常量 和高度常量的定义如方法一。procedureTForm1.FormCreate(Sender:TObject);
    var
    devmode:tDevicemode;
    begin
    ifscreen.width<>orignwidththen
    begin
    ifEnumDisplaySettings(nil,0,devmode)then
    begin
    devmode.dmfields:=dm_pelswidthORdm_pelsheight;
    devmode.dmpelswidth:=orignwidth;{宽度}
    devmode.dmpelsheight:=orignheight;{高度}
    ChangeDisplaySettings(devmode,0);{更改设置}
    end;
    end;
    end; 
      

  4.   

    long changedisplaysettings(   lpdevmode lpdevmode,   //指向devmode结构指针   dword dwflags          //标志位);enumdisplaysettings得到当前分辨率。如:   mdevmode:devmode;enumdisplaysettings(nil,1,mdevmode);mdevmode.dmpelswidth:=1024;mdevmode.dmpelsheight:=768;mdevmode.dmfields:=dm_pelswindth or dm_pelsheight;changdisplaysettings(mdevmode,0);