Informations sur les moniteurs

Les sons standard Windows.

EnumDisplayMonitors, GetMonitorInfo

Voir version :

Pas de dépendances

Télécharger :

#define _WIN32_WINNT 0x0500 //w2k et +
#include <stdio.h>
#include <windows.h>

void AfficherRect(LPRECT prect)
{
    printf("  bas=%ld haut=%ld gauche=%ld droite=%ld\n",prect->bottom,prect->top,prect->left,prect->right);
}

BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor,HDC hdcMonitor,LPRECT lprcMonitor,LPARAM dwData)
{
    MONITORINFOEX info;
    printf("Moniteur detecte :\n");
    info.cbSize = sizeof(MONITORINFOEX);
    if (GetMonitorInfo(hMonitor,(LPMONITORINFO)&info)) //cast
    {
        printf("  Nom = %S\n",info.szDevice); //%S ou %s si UNICODE ou pas
        printf("  Principal : %s\n",(info.dwFlags==MONITORINFOF_PRIMARY)?("Oui"):("Non"));
        printf("  rcMonitor : ");
        AfficherRect(&(info.rcMonitor));
        printf("  rcWork : ");
        AfficherRect(&(info.rcWork));
    }
    return TRUE;
}

int main()
{
    EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, 0);  
    return 0;
}



Commentaires


  Voici de quoi énumérer les écrans présents sur votre système.
  Si vous avez par exemple deux écrans branchés.

  La fonction EnumDisplayMonitors va appeler N fois la fonction que vous lui passez en paramètre, avec N le nombre de moniteurs branchés.
  Les paramètres seront, entre autres, un identifiant moniteur (HMONITOR), et une zone rectangulaire lprcMonitor.

  En faisant GetMonitorInfo, vous avez accès à une structure qui vous donne davantage d'informations : le nom du moniteur, et deux rectangles :
  rcMonitor : la résolution du moniteur, et rcWork, la dimension de la zone de travail (qui peut être un peu plus petite, par exemple à cause de la barre de tâches)

  Vous saurez aussi quel moniteur est le moniteur principal.
  Il se peut que pour les moniteurs secondaires, les coordonnées soient négatives : c'est le cas par exemple s'il est placé (virtuellement) à gauche du principal.


  Quelques liens de documentation :
http://msdn.microsoft.com/en-us/library/dd162610(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/dd145061(v=vs.85).aspx