NOTES :
C'est en réponse à une question dans un forum.
Attention : ne fonctionne pas avec Windows95.
CODE :
Unit Unit1; // Obtenir la liste des moniteurs présents sur votre PC. // // Par Nono40 : http://nono40.developpez.com http://nono40.fr.st // mailTo:nono40@fr.st // // Le 25/01/2002 //
Type
TForm1 = Class(TForm)
Memo1: TMemo; Procedure FormShow(Sender: TObject); Private { Déclarations privées } Public { Déclarations publiques } End;
Var
Form1: TForm1;
Implementation
{$R *.dfm}
// Type utilisé par la fonction GetMonitorInfo pour // retourner les informations sur le moniteur voulu Type
PMonitorInfoEx=^TMonitorInfoEx;
TMonitorInfoEx=Record
cbSize : DWord;
rcMonitor : TRect;
rcWork : TRect;
dwFlags : DWord;
szDevice : Array[0..CCHDEVICENAME-1]Of Char; End;
// Fonction donnant des informations sur un moniteurs Function GetMonitorInfo(Montiteur:THandle;LpInfo:PMonitorInfoEx)
:Bool;StdCall; external User32 name 'GetMonitorInfoA';
// Fonction d'énumération des moniteurs présents Function EnumDisplayMonitors(DC:HDC;LpRect:PRect;CallBack:TFarProc;Param:Pointer)
:Bool;StdCall; external user32 name 'EnumDisplayMonitors';
// Procédure appelée par l'énumérateur des moniteurs Function EnumProc(Moniteur:THandle;DC:HDC;Rect:PRect;Param:Pointer):Bool;StdCall Var Infos:TMonitorInfoEx; Begin // Pour chaque moniteurs rencontré, on en recherche le nom
Infos.cbSize:=SizeOf(Infos); If GetMonitorInfo(Moniteur,@Infos)Then Form1.Memo1.Lines.Add(Infos.szDevice); // Et on continue l'énumération
Result:=True; End;
// Enumération des moniteurs au démarrage de l'application Procedure TForm1.FormShow(Sender: TObject); Begin
Memo1.Lines.Clear;
EnumDisplayMonitors(0,Nil,@EnumProc,Nil); End;