当程序运行时检测当前计算机的分辨率是多少!就比如说当前分辨率是800*600,程序要自动把它该为1024*800的,如果有代码更好!将有高分相送!

解决方案 »

  1.   

    要改变监视器分辨率可以用这两个函数:
    EnumDisplaySettings()
    ChangeDisplaySettings()Example: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.Button1Click(Sender: TObject);
    begin
      if DynamicResolution(640, 480) then
        ShowMessage('Now is 640*480');
    end;
      

  2.   

    定义两个全局变量screenx,screeny:integer;
    此文转字小虫的回复帖子(好象是,要不就是阿呆)
    procedure TForm1.FormCreate(Sender: TObject);
    var
      sx, sy: Integer;
      DevMode: TDeviceMode;
    begin
      sx := GetSystemMetrics(SM_CXSCREEN); //分辨率宽
      sy := GetSystemMetrics(SM_CYSCREEN); //分辨率高
      //用于在程序结束时把分辨率 改回原始状态
      screenx := sx; //分辨率宽
      screeny := sy; //分辨率高
      if (sx <> 1024) and (sy <> 768) then
      begin
        DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
        DevMode.dmPelsWidth := 800;
        DevMode.dmPelsHeight := 600;
        ChangeDisplaySettings(DevMode,0); //设置新的显示参数
      end;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      sx, sy: Integer;
      DevMode: TDeviceMode;
    begin
      sx := GetSystemMetrics(SM_CXSCREEN); //分辨率宽
      sy := GetSystemMetrics(SM_CYSCREEN); //分辨率高
      if (sx <> screenx) and (sy <> screeny) then
        begin
          DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
          DevMode.dmPelsWidth := screenx;
          DevMode.dmPelsHeight := screeny;
          ChangeDisplaySettings(DevMode,0); //设置新的显示参数
        end;
      actiON:=cafree;
    end;
      

  3.   

    分辨率好办,就是刷新频率没有办法完成,尽管它devmode提供参数,但却不能成功。
      

  4.   

    pr_IntScWidth:=Screen.Width;
      pr_IntScHeight:=Screen.Height;  if (Screen.Width <> 800) or (Screen.Height <> 600) then
      begin
        if Com_ChangeDisSetting(800,600) = False then
        begin
          Com_ShowDlg('提示','无法改变屏幕分辨率!',1,1,'NO');
          Halt;
        end;
      end;
      

  5.   

    l_xiaofeng(流水不腐) 
    他的方法可以实现,但改了以后又存在刷新问题,不知那位朋友可以告知?~~
      

  6.   

    EnumDisplaySettings()
    ChangeDisplaySettings()