// Hiermit kann man die Bildschirmauflösung ändern.

// Getestet mit D4 unter WinME

type 
  Rueckmeldung = record 
    permiss: byte; 
    DMode: _devicemodeA; 
  end; 
 
function AufloesungTesten(sizex, sizey, FarbTiefe: DWord): Rueckmeldung; 
var DevMode: _devicemodeA; 
  i: Integer; 
begin 
  i := 0; 
  Result.permiss := 0; 
  DevMode.dmSize := sizeof(_devicemodeA); 
  while EnumDisplaySettings(nil, i, DevMode) do begin 
    with DevMode do 
      if (dmPelsWidth = sizex) and (dmPelsHeight = SizeY) and 
        (dmBitsPerPel = FarbTiefe) then begin 
        case ChangeDisplaySettings(DevMode, CDS_TEST) of 
          DISP_CHANGE_RESTART: begin Result.permiss := 1; 
              Result.DMode := DevMode; 
            end; 
          DISP_CHANGE_BADFLAGS, DISP_CHANGE_FAILED, DISP_CHANGE_BADMODE, 
            DISP_CHANGE_NOTUPDATED: 
            exit; 
        else begin Result.permiss := 2; 
            Result.DMode := DevMode; 
          end; 
        end; 
        exit; 
      end; 
    Inc(i); 
  end; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  waagerecht, senkrecht, FarbBits: DWord; 
  erg: Rueckmeldung; 
begin 
  waagerecht := 800; 
  senkrecht := 600; 
  FarbBits := 16; // 8,16,24,32 
  erg := AufloesungTesten(waagerecht, senkrecht, FarbBits); 
  case erg.permiss of 
    0: begin showmessage('Umschalten nicht möglich'); 
        exit; 
      end; 
    1: showmessage('Neustart erforderlich'); 
  end; 
  ChangeDisplaySettings(erg.DMode, CDS_UPDATEREGISTRY) 
end;




Zugriffe seit 6.9.2001 auf Delphi-Ecke