GetSystemMetrics, fonction (winuser.h)
Récupère la métrique système ou le paramètre de configuration système spécifié.
Notez que toutes les dimensions récupérées par GetSystemMetrics sont en pixels.
Syntaxe
int GetSystemMetrics(
[in] int nIndex
);
Paramètres
[in] nIndex
Type : int
Paramètre de configuration ou de métrique système à récupérer. Ce paramètre peut prendre les valeurs suivantes. Notez que toutes les valeurs SM_CX* sont des largeurs et que toutes les valeurs SM_CY* sont des hauteurs. Notez également que tous les paramètres conçus pour renvoyer des données booléennes représentent TRUE comme toute valeur différente de zéro, et FALSE comme une valeur zéro.
Valeur | Signification |
---|---|
|
Indicateurs qui spécifient la façon dont le système a organisé les fenêtres réduites. Pour plus d’informations, consultez la section Remarques de cette rubrique. |
|
Valeur qui spécifie la façon dont le système est démarré :
|
|
Nombre de moniteurs d’affichage sur un bureau. Pour plus d’informations, consultez la section Remarques de cette rubrique. |
|
Nombre de boutons sur une souris, ou zéro si aucune souris n’est installée. |
|
Reflète l’état de l’ordinateur portable ou du mode ardoise, 0 pour le mode Ardoise et non zéro dans le cas contraire. Lorsque cette métrique système change, le système envoie un message de diffusion via WM_SETTINGCHANGE avec « ConvertibleSlateMode » dans le LPARAM. Notez que cette métrique système ne s’applique pas aux PC de bureau. Dans ce cas, utilisez GetAutoRotationState. |
|
Largeur d’une bordure de fenêtre, en pixels. Cela équivaut à la valeur SM_CXEDGE pour les fenêtres avec l’apparence 3D. |
|
Largeur nominale d’un curseur, en pixels. |
|
Cette valeur est identique à SM_CXFIXEDFRAME. |
|
Largeur du rectangle autour de l’emplacement d’un premier clic dans une séquence de double-clic, en pixels. Le deuxième clic doit se produire dans le rectangle défini par SM_CXDOUBLECLK et SM_CYDOUBLECLK pour que le système considère les deux clics comme un double-clic. Les deux clics doivent également se produire dans un délai spécifié.
Pour définir la largeur du rectangle de double-clic, appelez SystemParametersInfo avec SPI_SETDOUBLECLKWIDTH. |
|
Nombre de pixels de chaque côté d’un point vers le bas de la souris que le pointeur de la souris peut déplacer avant le début d’une opération de glissement. Cela permet à l’utilisateur de cliquer et de relâcher facilement le bouton de la souris sans démarrer involontairement une opération de glissement. Si cette valeur est négative, elle est soustraite de la gauche du point vers le bas de la souris et ajoutée à sa droite. |
|
Largeur d’une bordure 3D, en pixels. Cette métrique est l’équivalent 3D de SM_CXBORDER. |
|
Épaisseur du cadre autour du périmètre d’une fenêtre qui a un légende mais n’est pas importante, en pixels.
SM_CXFIXEDFRAME est la hauteur de la bordure horizontale et SM_CYFIXEDFRAME est la largeur de la bordure verticale.
Cette valeur est identique à SM_CXDLGFRAME. |
|
Largeur des bords gauche et droit du rectangle de focus que dessine DrawFocusRect . Cette valeur est exprimée en pixels.
Windows 2000 : Cette valeur n’est pas prise en charge. |
|
Cette valeur est identique à SM_CXSIZEFRAME. |
|
Largeur de la zone cliente pour une fenêtre plein écran sur le moniteur d’affichage principal, en pixels. Pour obtenir les coordonnées de la partie de l’écran qui n’est pas masquée par la barre des tâches système ou par les barres d’outils du bureau d’application, appelez la fonction SystemParametersInfo avec la valeur SPI_GETWORKAREA. |
|
Largeur de la bitmap de flèche sur une barre de défilement horizontale, en pixels. |
|
Largeur de la zone de pouce dans une barre de défilement horizontale, en pixels. |
|
Grande largeur système d’une icône, en pixels. La fonction LoadIcon peut charger uniquement les icônes avec les dimensions que SM_CXICON et SM_CYICON spécifient. Pour plus d’informations, consultez Tailles des icônes . |
|
Largeur d’une cellule de grille pour les éléments en mode icône de grande taille, en pixels. Chaque élément tient dans un rectangle de taille SM_CXICONSPACING par SM_CYICONSPACING lorsqu’il est organisé. Cette valeur est toujours supérieure ou égale à SM_CXICON. |
|
Largeur par défaut, en pixels, d’une fenêtre de niveau supérieur agrandie sur le moniteur d’affichage principal. |
|
Largeur maximale par défaut d’une fenêtre qui a un légende et des bordures de dimensionnement, en pixels. Cette métrique fait référence à l’ensemble du bureau. L’utilisateur ne peut pas faire glisser le cadre de fenêtre vers une taille supérieure à ces dimensions. Une fenêtre peut remplacer cette valeur en traitant le message WM_GETMINMAXINFO . |
|
Largeur du menu par défaut case activée bitmap de marque, en pixels. |
|
Largeur des boutons de la barre de menus, comme le bouton de fermeture de la fenêtre enfant utilisé dans l’interface de plusieurs documents, en pixels. |
|
Largeur minimale d’une fenêtre, en pixels. |
|
Largeur d’une fenêtre réduite, en pixels. |
|
Largeur d’une cellule de grille pour une fenêtre réduite, en pixels. Chaque fenêtre réduite s’intègre dans un rectangle de cette taille lorsqu’elle est organisée. Cette valeur est toujours supérieure ou égale à SM_CXMINIMIZED. |
|
Largeur de suivi minimale d’une fenêtre, en pixels. L’utilisateur ne peut pas faire glisser le cadre de fenêtre vers une taille inférieure à ces dimensions. Une fenêtre peut remplacer cette valeur en traitant le message WM_GETMINMAXINFO . |
|
Quantité de remplissage de bordure pour les fenêtres sous-titrés, en pixels.
Windows XP/2000 : Cette valeur n’est pas prise en charge. |
|
Largeur de l’écran du moniteur d’affichage principal, en pixels. Il s’agit de la même valeur obtenue en appelant GetDeviceCaps comme suit : GetDeviceCaps(
hdcPrimaryMonitor, HORZRES) .
|
|
Largeur d’un bouton dans une fenêtre légende ou barre de titre, en pixels. |
|
Épaisseur de la bordure de dimensionnement autour du périmètre d’une fenêtre qui peut être redimensionnée, en pixels.
SM_CXSIZEFRAME est la largeur de la bordure horizontale et SM_CYSIZEFRAME correspond à la hauteur de la bordure verticale.
Cette valeur est identique à SM_CXFRAME. |
|
Petite largeur système d’une icône, en pixels. Les petites icônes s’affichent généralement dans les sous-titres des fenêtres et dans la vue des petites icônes. Pour plus d’informations, consultez Tailles des icônes . |
|
Largeur des petits boutons légende, en pixels. |
|
Largeur de l’écran virtuel, en pixels. L’écran virtuel est le rectangle englobant de tous les moniteurs d’affichage. La SM_XVIRTUALSCREEN métrique est les coordonnées du côté gauche de l’écran virtuel. |
|
Largeur d’une barre de défilement verticale, en pixels. |
|
Hauteur d’une bordure de fenêtre, en pixels. Cela équivaut à la valeur SM_CYEDGE pour les fenêtres avec l’apparence 3D. |
|
Hauteur d’une zone légende, en pixels. |
|
Hauteur nominale d’un curseur, en pixels. |
|
Cette valeur est identique à SM_CYFIXEDFRAME. |
|
Hauteur du rectangle autour de l’emplacement d’un premier clic dans une séquence de double-clic, en pixels. Le deuxième clic doit se produire dans le rectangle défini par SM_CXDOUBLECLK et SM_CYDOUBLECLK pour que le système considère les deux clics comme un double-clic. Les deux clics doivent également se produire dans un délai spécifié.
Pour définir la hauteur du rectangle double-clic, appelez SystemParametersInfo avec SPI_SETDOUBLECLKHEIGHT. |
|
Nombre de pixels au-dessus et en dessous d’un point bas que le pointeur de la souris peut déplacer avant le début d’une opération de glissement. Cela permet à l’utilisateur de cliquer et de relâcher facilement le bouton de la souris sans démarrer involontairement une opération de glissement. Si cette valeur est négative, elle est soustraite au-dessus du point bas de la souris et ajoutée en dessous. |
|
Hauteur d’une bordure 3D, en pixels. Il s’agit du équivalent 3D de SM_CYBORDER. |
|
Épaisseur du cadre autour du périmètre d’une fenêtre qui a une légende mais n’est pas importante, en pixels.
SM_CXFIXEDFRAME correspond à la hauteur de la bordure horizontale et SM_CYFIXEDFRAME est la largeur de la bordure verticale.
Cette valeur est identique à SM_CYDLGFRAME. |
|
Hauteur des bords supérieur et inférieur du rectangle de focus dessiné par DrawFocusRect. Cette valeur est en pixels.
Windows 2000 : Cette valeur n’est pas prise en charge. |
|
Cette valeur est identique à SM_CYSIZEFRAME. |
|
Hauteur de la zone cliente d’une fenêtre plein écran sur le moniteur d’affichage principal, en pixels. Pour obtenir les coordonnées de la partie de l’écran qui n’est pas masquée par la barre des tâches système ou par les barres d’outils de bureau de l’application, appelez la fonction SystemParametersInfo avec la valeur SPI_GETWORKAREA. |
|
Hauteur d’une barre de défilement horizontale, en pixels. |
|
Hauteur système d’une icône, en pixels. La fonction LoadIcon peut charger uniquement les icônes avec les dimensions que SM_CXICON et SM_CYICON spécifient. Pour plus d’informations, consultez Tailles des icônes . |
|
Hauteur d’une cellule de grille pour les éléments en mode grandes icônes, en pixels. Chaque élément s’intègre dans un rectangle de taille SM_CXICONSPACING par SM_CYICONSPACING lorsqu’il est organisé. Cette valeur est toujours supérieure ou égale à SM_CYICON. |
|
Pour les versions de jeu de caractères double octet du système, il s’agit de la hauteur de la fenêtre Kanji en bas de l’écran, en pixels. |
|
Hauteur par défaut, en pixels, d’une fenêtre de niveau supérieur agrandie sur l’écran d’affichage principal. |
|
Hauteur maximale par défaut d’une fenêtre qui a un légende et des bordures de dimensionnement, en pixels. Cette métrique fait référence à l’ensemble du bureau. L’utilisateur ne peut pas faire glisser le cadre de fenêtre vers une taille supérieure à ces dimensions. Une fenêtre peut remplacer cette valeur en traitant le message WM_GETMINMAXINFO . |
|
Hauteur d’une barre de menus monoligne, en pixels. |
|
Hauteur du menu par défaut case activée bitmap de marque, en pixels. |
|
Hauteur des boutons de la barre de menus, tels que le bouton de fermeture de la fenêtre enfant utilisé dans l’interface de plusieurs documents, en pixels. |
|
Hauteur minimale d’une fenêtre, en pixels. |
|
Hauteur d’une fenêtre réduite, en pixels. |
|
Hauteur d’une cellule de grille pour une fenêtre réduite, en pixels. Chaque fenêtre réduite s’intègre dans un rectangle de cette taille lorsqu’elle est organisée. Cette valeur est toujours supérieure ou égale à SM_CYMINIMIZED. |
|
Hauteur de suivi minimale d’une fenêtre, en pixels. L’utilisateur ne peut pas faire glisser le cadre de fenêtre vers une taille inférieure à ces dimensions. Une fenêtre peut remplacer cette valeur en traitant le message WM_GETMINMAXINFO . |
|
Hauteur de l’écran du moniteur d’affichage principal, en pixels. Il s’agit de la même valeur obtenue en appelant GetDeviceCaps comme suit : GetDeviceCaps(
hdcPrimaryMonitor, VERTRES) .
|
|
Hauteur d’un bouton dans une fenêtre légende ou une barre de titre, en pixels. |
|
Épaisseur de la bordure de dimensionnement autour du périmètre d’une fenêtre qui peut être redimensionnée, en pixels.
SM_CXSIZEFRAME est la largeur de la bordure horizontale et SM_CYSIZEFRAME correspond à la hauteur de la bordure verticale.
Cette valeur est identique à SM_CYFRAME. |
|
Hauteur d’un petit légende, en pixels. |
|
Petite hauteur système d’une icône, en pixels. Les petites icônes s’affichent généralement dans les sous-titres des fenêtres et dans la vue des petites icônes. Pour plus d’informations, consultez Tailles des icônes . |
|
Hauteur des petits boutons légende, en pixels. |
|
Hauteur de l’écran virtuel, en pixels. L’écran virtuel est le rectangle englobant de tous les moniteurs d’affichage. La SM_YVIRTUALSCREEN métrique est les coordonnées du haut de l’écran virtuel. |
|
Hauteur de l’image bitmap de flèche sur une barre de défilement verticale, en pixels. |
|
Hauteur de la zone de pouce dans une barre de défilement verticale, en pixels. |
|
Différent de zéro si User32.dll prend en charge DBCS ; sinon, 0. |
|
Différent de zéro si la version de débogage de User.exe est installée ; sinon, 0. |
|
Différent de zéro si le système d’exploitation actuel est Windows 7 ou Windows Server 2008 R2 et que le service d’entrée Tablet PC est démarré ; sinon, 0. La valeur de retour est un masque de bits qui spécifie le type d’entrée du numériseur pris en charge par l’appareil. Pour plus d'informations, consultez la section Notes.
Windows Server 2008, Windows Vista et Windows XP/2000 : Cette valeur n’est pas prise en charge. |
|
Différent de zéro si le gestionnaire de méthodes d’entrée/la méthode d’entrée Rédacteur fonctionnalités sont activées ; sinon, 0.
SM_IMMENABLED indique si le système est prêt à utiliser un IME basé sur Unicode sur une application Unicode. Pour vous assurer qu’un IME dépendant de la langue fonctionne, case activée SM_DBCSENABLED et la page de codes ANSI système. Sinon, la conversion ANSI-Unicode risque de ne pas être effectuée correctement, ou certains composants tels que les polices ou les paramètres de Registre peuvent ne pas être présents. |
|
Différent de zéro s’il y a des numériseurs dans le système ; sinon, 0.
SM_MAXIMUMTOUCHES retourne la valeur maximale agrégée du nombre maximal de contacts pris en charge par chaque numériseur dans le système. Si le système n’a que des numériseurs tactiles, la valeur de retour est 1. Si le système dispose de numériseurs multi-touch, la valeur de retour est le nombre de contacts simultanés que le matériel peut fournir. Windows Server 2008, Windows Vista et Windows XP/2000 : Cette valeur n’est pas prise en charge. |
|
Différent de zéro si le système d’exploitation actuel est Windows XP, Media Center Edition, 0 si ce n’est pas le cas. |
|
Différent de zéro si les menus déroulants sont alignés à droite avec l’élément de barre de menus correspondant ; 0 si les menus sont alignés à gauche. |
|
Différent de zéro si le système est activé pour l’hébreu et l’arabe, 0 si ce n’est pas le cas. |
|
Différent de zéro si une souris est installée ; sinon, 0. Cette valeur est rarement nulle, en raison de la prise en charge des souris virtuelles et parce que certains systèmes détectent la présence du port au lieu de la présence d’une souris. |
|
Différent de zéro si une souris avec une roulette de défilement horizontale est installée ; sinon 0. |
|
Différent de zéro si une souris avec une roulette de défilement verticale est installée ; sinon 0. |
|
Le bit le moins significatif est défini si un réseau est présent ; sinon, il est effacé. Les autres bits sont réservés pour une utilisation ultérieure. |
|
Différent de zéro si les extensions Microsoft Windows for Pen computing sont installées ; zéro dans le cas contraire. |
|
Cette métrique système est utilisée dans un environnement Terminal Services pour déterminer si la session Terminal Server actuelle est contrôlée à distance. Sa valeur est différente de zéro si la session active est contrôlée à distance ; sinon, 0.
Vous pouvez utiliser des outils de gestion des services Terminal Server tels que le Gestionnaire des services Terminal (tsadmin.msc) et shadow.exe pour contrôler une session à distance. Lorsqu’une session est contrôlée à distance, un autre utilisateur peut afficher le contenu de cette session et éventuellement interagir avec celle-ci. |
|
Cette métrique système est utilisée dans un environnement Terminal Services. Si le processus appelant est associé à une session cliente Terminal Services, la valeur de retour est différente de zéro. Si le processus appelant est associé à la session de console Terminal Services, la valeur de retour est 0. Windows Server 2003 et Windows XP : La session de console n’est pas nécessairement la console physique. Pour plus d’informations, consultez WTSGetActiveConsoleSessionId. |
|
Différent de zéro si tous les moniteurs d’affichage ont le même format de couleur, sinon, 0. Deux écrans peuvent avoir la même profondeur de bits, mais des formats de couleurs différents. Par exemple, les pixels rouge, vert et bleu peuvent être encodés avec différents nombres de bits, ou ces bits peuvent se trouver à différents emplacements dans une valeur de couleur de pixel. |
|
Cette métrique système doit être ignorée ; elle retourne toujours 0. |
|
Numéro de build si le système est Windows Server 2003 R2 ; sinon, 0. |
|
Différent de zéro si l’utilisateur exige qu’une application présente visuellement des informations dans des situations où elle ne présenterait l’information que sous forme sonore ; sinon, 0. |
|
Différent de zéro si la session active s’arrête ; sinon, 0.
Windows 2000 : Cette valeur n’est pas prise en charge. |
|
Différent de zéro si l’ordinateur a un processeur bas de bout (lent) ; sinon, 0. |
|
Différent de zéro si le système d’exploitation actuel est Windows 7 Édition Starter Edition, Windows Vista Starter ou Windows XP Starter Edition ; sinon, 0. |
|
Différent de zéro si les significations des boutons gauche et droit de la souris sont permutées ; sinon, 0. |
|
Reflète l’état du mode d’ancrage, 0 pour le mode sans ancrage et non zéro dans le cas contraire. Lorsque cette métrique système change, le système envoie un message de diffusion via WM_SETTINGCHANGE avec « SystemDockMode » dans le LPARAM. |
|
Différent de zéro si le système d’exploitation actuel est l’édition Tablette PC windows XP ou si le système d’exploitation actuel est Windows Vista ou Windows 7 et que le service d’entrée Tablet PC est démarré ; sinon, 0. Le paramètre SM_DIGITIZER indique le type d’entrée du numériseur pris en charge par un appareil exécutant Windows 7 ou Windows Server 2008 R2. Pour plus d'informations, consultez la section Notes. |
|
Coordonnées du côté gauche de l’écran virtuel. L’écran virtuel est le rectangle englobant de tous les moniteurs d’affichage. La métrique SM_CXVIRTUALSCREEN est la largeur de l’écran virtuel. |
|
Coordonnées du haut de l’écran virtuel. L’écran virtuel est le rectangle englobant de tous les moniteurs d’affichage. La métrique SM_CYVIRTUALSCREEN est la hauteur de l’écran virtuel. |
Valeur retournée
Type : int
Si la fonction réussit, la valeur de retour est la métrique système ou le paramètre de configuration demandé.
Si la fonction échoue, la valeur de retour est 0. GetLastError ne fournit pas d’informations étendues sur les erreurs.
Remarques
Les métriques système peuvent varier d’un affichage à l’autre.
GetSystemMetrics(SM_CMONITORS) compte uniquement les moniteurs d’affichage visibles. Cela est différent de EnumDisplayMonitors, qui énumère à la fois les moniteurs d’affichage visibles et les pseudo-moniteurs invisibles associés aux pilotes de mise en miroir. Un pseudo-moniteur invisible est associé à un pseudo-appareil utilisé pour miroir dessin d’application à des fins de communication à distance ou à d’autres fins.
Le paramètre SM_ARRANGE spécifie la façon dont le système organise les fenêtres réduites et se compose d’une position de départ et d’une direction. La position de départ peut être l’une des valeurs suivantes.
Valeur | Signification |
---|---|
ARW_BOTTOMLEFT | Commencez dans le coin inférieur gauche de l’écran. Position par défaut. |
ARW_BOTTOMRIGHT | Commencez dans le coin inférieur droit de l’écran. Équivalent à ARW_STARTRIGHT. |
ARW_TOPLEFT | Commencez dans le coin supérieur gauche de l’écran. Équivalent à ARW_STARTTOP. |
ARW_TOPRIGHT | Démarrez dans le coin supérieur droit de l’écran. Équivalent à ARW_STARTTOP | SRW_STARTRIGHT. |
La direction dans laquelle organiser les fenêtres réduites peut être l’une des valeurs suivantes.
Valeur | Signification |
---|---|
ARW_DOWN | Organisez verticalement, de haut en bas. |
ARW_HIDE | Masquez les fenêtres réduites en les déplaçant hors de la zone visible de l’écran. |
ARW_LEFT | Organisez horizontalement, de gauche à droite. |
ARW_RIGHT | Organisez horizontalement, de droite à gauche. |
ARW_UP | Organisez verticalement, de bas en haut. |
Le paramètre SM_DIGITIZER spécifie le type de numériseurs installés sur un appareil exécutant Windows 7 ou Windows Server 2008 R2. La valeur de retour est un masque de bits qui spécifie une ou plusieurs des valeurs suivantes.
Valeur | Signification |
---|---|
NID_INTEGRATED_TOUCH 0x01 |
L’appareil dispose d’un numériseur tactile intégré. |
NID_EXTERNAL_TOUCH 0x02 |
L’appareil dispose d’un numériseur tactile externe. |
NID_INTEGRATED_PEN 0x04 |
L’appareil dispose d’un numériseur de stylet intégré. |
NID_EXTERNAL_PEN 0x08 |
L’appareil dispose d’un numériseur de stylet externe. |
NID_MULTI_INPUT 0x40 |
L’appareil prend en charge plusieurs sources d’entrée du numériseur. |
NID_READY 0x80 |
L’appareil est prêt à recevoir l’entrée du numériseur. |
Cette API n’est pas compatible avec DPI et ne doit pas être utilisée si le thread appelant prend en charge le DPI par moniteur. Pour obtenir la version prenant en charge DPI de cette API, consultez GetSystemMetricsForDPI. Pour plus d’informations sur la sensibilisation aux PPP, consultez la documentation Windows High DPI.
Exemples
L’exemple suivant utilise la fonction GetSystemMetrics pour déterminer si une souris est installée et si les boutons de la souris sont échangés. L’exemple utilise également la fonction SystemParametersInfo pour récupérer le seuil et la vitesse de la souris. Il affiche les informations dans la console.
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
void main()
{
BOOL fResult;
int aMouseInfo[3];
fResult = GetSystemMetrics(SM_MOUSEPRESENT);
if (fResult == 0)
printf("No mouse installed.\n");
else
{
printf("Mouse installed.\n");
// Determine whether the buttons are swapped.
fResult = GetSystemMetrics(SM_SWAPBUTTON);
if (fResult == 0)
printf("Buttons not swapped.\n");
else printf("Buttons swapped.\n");
// Get the mouse speed and the threshold values.
fResult = SystemParametersInfo(
SPI_GETMOUSE, // get mouse information
0, // not used
&aMouseInfo, // holds mouse information
0); // not used
if( fResult )
{
printf("Speed: %d\n", aMouseInfo[2]);
printf("Threshold (x,y): %d,%d\n",
aMouseInfo[0], aMouseInfo[1]);
}
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Ensemble d’API | ext-ms-win-ntuser-sysparams-ext-l1-1-0 (introduit dans Windows 8) |