Changer la resolution de l'ecran (y compris couleur)

Soyez le premier à donner votre avis sur cette source.

Vue 5 155 fois - Téléchargée 569 fois


Description

Ce code permet de lire et de modifier la résolution de l'écran. Il envoie un message (SendMessage) aux autres fenêtres, ce qui permet entre autres d'avoir une barre des tâches convenablement redimensionnée et déplacée.

Source / Exemple :


unit mdlChangeRes;

interface

uses Windows;
  
function GetResX():integer;
function GetResY():integer;
function GetNbCoul():integer;
function SetRes(const ResX,ResY,NbCoul:integer):integer;

implementation

function GetResX():integer;
var
  DM:_devicemodeA;
begin
  EnumDisplaySettings('',uint(-1),DM);
  Result:=DM.dmPelsWidth;
end;

function GetResY():integer;
var
  DM:_devicemodeA;
begin
  EnumDisplaySettings('',uint(-1),DM);
  Result:=DM.dmPelsHeight;
end;

function GetNbCoul():integer;
var
  DM:_devicemodeA;
begin
  EnumDisplaySettings('',uint(-1),DM);
  Result:=DM.dmBitsPerPel;
end;

function SetRes(const ResX,ResY,NbCoul:integer):integer;
var
  DM:_devicemodeA;
begin
  EnumDisplaySettings('',uint(-1),DM);
  DM.dmFields:=0;
  if (ResX<>DM.dmPelsWidth) then DM.dmFields:=DM_PELSWIDTH;
  if (ResY<>DM.dmPelsHeight) then DM.dmFields:=(DM.dmFields or DM_PELSHEIGHT);
  if (NbCoul<>DM.dmBitsPerPel) then DM.dmFields:=(DM.dmFields or DM_BITSPERPEL);
  if (DM.dmFields<>0) then begin
    DM.dmPelsWidth:=ResX;
    DM.dmPelsHeight:=ResY;
    DM.dmBitsPerPel:=NbCoul;
    if (ChangeDisplaySettings(DM,CDS_UPDATEREGISTRY)=DISP_CHANGE_SUCCESSFUL) then begin
      SendMessage($FFFF,$1B,0,0);
      SendMessage($FFFF,$7E,NbCoul,(ResX + $10000 * ResY));
      Result:=0;
    end else Result:=1;
  end;
end;

end.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
vendredi 1 décembre 2000
Statut
Membre
Dernière intervention
16 mai 2011

Bonjour à tous,
Effectivement, tel que présenté, ce module ne fonctionne pas !
Pour obtenir des résultats cohérents et exploitables, il suffit de remplacer, dans chaque ligne contenant '' par nil comme ci-dessous

EnumDisplaySettings('',uint(-1),DM);

remplacé par ceci :

EnumDisplaySettings(nil,uint(-1),DM);

Salutations.
Pierre.
Messages postés
3
Date d'inscription
lundi 23 janvier 2006
Statut
Membre
Dernière intervention
4 mars 2006

saluut
franchement merci (c'est le probleme ke jai :))))
ce code je lai pas encore essayer mais je te donnerai de mes nouvelle
Messages postés
13
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
13 octobre 2004

yup pareil, impossible d'en tirer quoi que ce soit... c'est, ennuyeux
Messages postés
81
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
8 février 2007

bonjour

je ne suis pas trop fort en delphi , mais jai adapter ton code pour ma DLL mIRC, encore que la partie SetRes ne fonctionne pas lol

mé ce que me renvois les 3 autres est etrange
qd jveu voir les données du style %ResX x %ResY par %NbCoul
couleurs
jai ca en reponse: 2012486443 x 2012486493 par 4294967295 couleurs
dois faloir faire une conversion nan ?
jai commencer Delphi ya 1 semaine lolll alors c new pour moi, jai kelke base en pascal mé c t ya longtemps ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.