如何获取系统当前的分辨率

解决方案 »

  1.   

    Windows提供给我们两个API函数,可以动态调整显示器的分辨率,他们是EnumDisplaySettings() 和ChangeDisplaySettings(),下面这个例子就是了
    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;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      if DynamicResolution(800, 600) then
      ShowMessage('Now is 800*600');
    end;
      

  2.   

    GetSystemMetrics(SM_CXSCREEN);  分辩率宽
    GetSystemMetrics(SM_CXSCREEN);  分辩率高
      

  3.   

    var
    Screen: TScreen;
    begin
      showmessage('分辨率为:'+inttostr(Screen.Width)+'×'+inttostr(Screen.Height))
    end;
      

  4.   

    GetSystemMetrics(SM_CXSCREEN);  分辩率宽
    GetSystemMetrics(SM_CYSCREEN);  分辩率高
    楼上的认真点了!!!!
      

  5.   

    最简单还是用Screen。
    delphi中本来就提供了一个默认Screen: TScreen,不用声明。
    如可以在formcreate中写: 
     showmessage(Format('x:%d,y:%d',[Screen.Width,Screen.Height]));
      

  6.   

    //Return values for ChangeDisplaySettings
    // DISP_CHANGE_SUCCESSFUL          = 0;
    //  DISP_CHANGE_RESTART             = 1;
    //  DISP_CHANGE_FAILED              = -1;
    //  DISP_CHANGE_BADMODE             = -2;
    //  DISP_CHANGE_NOTUPDATED          = -3;
    //  DISP_CHANGE_BADFLAGS            = -4;
    //  DISP_CHANGE_BADPARAM            = -5;//改变刷新率
    function ChangeDisplayFrequency(dwFrequency:DWORD): LongInt;
    var
      DeviceMode: TDeviceMode;
    begin
      EnumDisplaySettings(nil,Cardinal(-1), DeviceMode);
      DeviceMode.dmDisplayFrequency := dwFrequency;
      Result := ChangeDisplaySettings(DeviceMode,CDS_UPDATEREGISTRY);
    end;//得到刷新率
    function GetDisplayFrequency: DWORD;
    var
     DeviceMode: TDeviceMode;
    begin
      EnumDisplaySettings(nil, Cardinal(-1), DeviceMode);
      Result := DeviceMode.dmDisplayFrequency;
    end;//改变系统分辨率
    function Resolution(X,Y:DWORD):LongInt;
    var
    DevMode:TDeviceMode;
    begin
      if EnumDisplaySettings(nil,0,DevMode) then
       begin
        DevMode.dmFields:=DM_PELSWIDTH Or DM_PELSHEIGHT;
        DevMode.dmPelsWidth:=X;
        DevMode.dmPelsHeight:=Y;
        Result:=ChangeDisplaySettings(DevMode,0);
      end
      else //非法的失败
        Result := -1;
    end;