Home > DELPHI - EMBARCADERO > [DELPHI] – Impostare e ripristinare la risoluzione del Video

[DELPHI] – Impostare e ripristinare la risoluzione del Video

L’esempio di seguito mostra come impostare e ripristinare la risoluzione video richiamando l’API di Windows : ChangeDisplaySettings().


unit USetVideo;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    B_SET: TBitBtn;
    B_RESET: TBitBtn;

    procedure B_SETClick(Sender: TObject);
    procedure B_RESETClick(Sender: TObject);

    function  ImpostaRisoluzioneVideo(pWidth:Integer; pHeight:Integer): Integer;

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;

  // ... Variabili globali contenenti i valori della risoluzione
  //     del video prima della nuova impostazione
  OldWidth  : Integer;
  OldHeight : Integer;

implementation
{$R *.DFM}
// .........................................................................
//   PROCEDURE : B_SETClick()
//               CLICK SUL BOTTONE : B_SET
// .........................................................................
procedure TForm1.B_SETClick(Sender: TObject);
begin
    // ... salva la risoluzione del Video Corrente
    OldWidth    := GetSystemMetrics(SM_CXSCREEN);
    OldHeight   := GetSystemMetrics(SM_CYSCREEN);

    // ... imposta la risoluzione Video ( es.: 1024 x 768 )
    ImpostaRisoluzioneVideo(1024, 768);
end;
// .........................................................................

// .........................................................................
//   FUNCTION : ImpostaRisoluzioneVideo()
//              IMPOSTAZIONE DELLA RISOLUZIONE VIDEO
// .........................................................................
function TForm1.ImpostaRisoluzioneVideo(pWidth, pHeight:Integer):Integer;
var
    DeviceMode: TDeviceMode;
begin

    // ... imposta i parametri della struttura TDeviceMode
    DeviceMode.dmSize       := SizeOf(TDeviceMode);
    DeviceMode.dmPelsWidth  := pWidth;
    DeviceMode.dmPelsHeight := pHeight;
    DeviceMode.dmFields     := DM_PELSWIDTH or DM_PELSHEIGHT;

    // ... richiama l'API di Windows per il set della risoluzione.
    //     Il secondo parametro rappresenta il Flag per il set.
    //
    //     Valori :
    //
    //    0                   = La risoluzione e' cambiata dinamicamente
    //    CDS_UPDATEREGISTRY  = La risoluzione e' cambiata dinamicamente e
    //                          sara' aggiornata nel registro
    //                          La modalita' e' memorizzata nel profilo
    //                          utente
    //    CDS_TEST            = Il sistema verifica se e' possibile impostare
    //                          la risoluzione (effettua un TEST)

    // ... per maggiori dettagli vedere l'SDK di Windows.

    Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY);

    //  ... possibili valori di ritorno :
    //
    //  DISP_CHANGE_SUCCESSFUL	= Impostazione effettuata con successo.
    //  DISP_CHANGE_RESTART	    = Il Sistema deve essere riavviato affinche'
    //                            l'impostazione abbia effetto.
    //  DISP_CHANGE_BADFLAGS	= Valore dei Flags passati errati.
    //  DISP_CHANGE_FAILED	    = Errore durante l'impostazione della
    //                            risoluzione.
    //  DISP_CHANGE_BADMODE	    = Risoluzione Video non supportata.
    //  DISP_CHANGE_NOTUPDATED  = Windows NT solo : non in grado di scrivere
    //                            nel registro.
end;
// .........................................................................

// .........................................................................
//   PROCEDURE : B_RESETClick()
//               CLICK SUL BOTTONE : B_RESET
// .........................................................................
procedure TForm1.B_RESETClick(Sender: TObject);
begin
    // ... Ripristina la risoluzione video con i valori salvati
    ImpostaRisoluzioneVideo(OldWidth, OldHeight);
end;
// .........................................................................

// ... END OF JOB

end.

Annunci
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...