Функция GetSystemMetrics (winuser.h)
Извлекает указанную системную метрику или параметр конфигурации системы.
Обратите внимание, что все измерения, полученные командой GetSystemMetrics , находятся в пикселях.
Синтаксис
int GetSystemMetrics(
[in] int nIndex
);
Параметры
[in] nIndex
Тип: int
Извлекаемая системная метрика или параметр конфигурации. Этот параметр может принимать одно из указанных ниже значений. Обратите внимание, что все значения SM_CX* имеют ширину, а все значения SM_CY* — высоту. Также обратите внимание, что все параметры, предназначенные для возврата логических данных, представляют TRUE как любое ненулевое значение, а FALSE — как нулевое значение.
Значение | Значение |
---|---|
|
Флаги, указывающие, как система упорядочивает свернутые окна. Дополнительные сведения см. в разделе Примечания этой статьи. |
|
Значение , указывающее, как запускается система:
|
|
Количество мониторов дисплея на рабочем столе. Дополнительные сведения см. в разделе Примечания этой статьи. |
|
Количество кнопок мыши или ноль, если мышь не установлена. |
|
Отражает состояние режима ноутбука или сланца, значение 0 для режима сланца и ненулевое значение в противном случае. При изменении этой системной метрики система отправляет широковещательное сообщение через WM_SETTINGCHANGE с параметром ConvertibleSlateMode в LPARAM. Обратите внимание, что эта системная метрика не применяется к настольным компьютерам. В этом случае используйте GetAutoRotationState. |
|
Ширина границы окна в пикселях. Это эквивалентно значению SM_CXEDGE для окон с трехмерной структурой. |
|
Номинальная ширина курсора в пикселях. |
|
Это значение совпадает с SM_CXFIXEDFRAME. |
|
Ширина прямоугольника вокруг расположения первого щелчка в последовательности двойного щелчка в пикселях. Второй щелчок должен происходить внутри прямоугольника, определенного SM_CXDOUBLECLK и SM_CYDOUBLECLK, чтобы система рассматривала эти два щелчка двойным щелчком. Два щелчка также должны выполняться в течение указанного времени.
Чтобы задать ширину прямоугольника двойного щелчка, вызовите SystemParametersInfo с SPI_SETDOUBLECLKWIDTH. |
|
Количество пикселей по обе стороны от точки вниз, которую указатель мыши может переместить до начала операции перетаскивания. Это позволяет пользователю легко нажать и отпустить кнопку мыши без непреднамеренного запуска операции перетаскивания. Если это значение отрицательное, оно вычитается слева от точки мыши вниз и добавляется справа от него. |
|
Ширина трехмерной границы в пикселях. Эта метрика является объемным аналогом SM_CXBORDER. |
|
Толщина рамки по периметру окна, которое имеет подпись, но не имеет размеров в пикселях.
SM_CXFIXEDFRAME — высота горизонтальной границы, а SM_CYFIXEDFRAME — ширина вертикальной границы.
Это значение совпадает с SM_CXDLGFRAME. |
|
Ширина левого и правого краев прямоугольника фокуса, который рисует DrawFocusRect . Это значение в пикселях.
Windows 2000: Это значение не поддерживается. |
|
Это значение совпадает с SM_CXSIZEFRAME. |
|
Ширина клиентской области полноэкранного окна на основном мониторе дисплея в пикселях. Чтобы получить координаты части экрана, которая не скрыта системной панелью задач или панелями инструментов рабочего стола приложения, вызовите функцию SystemParametersInfo со значением SPI_GETWORKAREA. |
|
Ширина растрового изображения стрелки на горизонтальной полосе прокрутки в пикселях. |
|
Ширина большого пальца в горизонтальной полосе прокрутки в пикселях. |
|
Системная большая ширина значка в пикселях. Функция LoadIcon может загружать только значки с измерениями, указанными SM_CXICON и SM_CYICON. Дополнительные сведения см. в разделе Размеры значков . |
|
Ширина ячейки сетки для элементов в представлении большого значка в пикселях. Каждый элемент помещается в прямоугольник размера SM_CXICONSPACING по SM_CYICONSPACING при упорядочении. Это значение всегда больше или равно SM_CXICON. |
|
Ширина по умолчанию (в пикселях) развернутого окна верхнего уровня на основном мониторе дисплея. |
|
Максимальная ширина окна по умолчанию с границами подпись и размеров в пикселях. Эта метрика относится ко всему рабочему столу. Пользователь не может перетащить рамку окна на размер, превышающий эти размеры. Окно может переопределить это значение, обрабатывая сообщение WM_GETMINMAXINFO . |
|
Ширина меню по умолчанию проверка пометки растрового изображения в пикселях. |
|
Ширина кнопок строки меню, таких как кнопка закрытия дочернего окна, используемая в интерфейсе нескольких документов, в пикселях. |
|
Минимальная ширина окна в пикселях. |
|
Ширина свернутого окна в пикселях. |
|
Ширина ячейки сетки для свернутого окна в пикселях. Каждое свернутое окно помещается в прямоугольник такого размера при упорядочении. Это значение всегда больше или равно SM_CXMINIMIZED. |
|
Минимальная ширина отслеживания окна в пикселях. Пользователь не может перетащить рамку окна на размер меньше этих размеров. Окно может переопределить это значение, обрабатывая сообщение WM_GETMINMAXINFO . |
|
Объем заполнения границы для окон с заголовками в пикселях.
Windows XP/2000: Это значение не поддерживается. |
|
Ширина экрана основного монитора дисплея в пикселях. Это же значение, полученное путем вызова Метода GetDeviceCaps следующим образом: GetDeviceCaps(
hdcPrimaryMonitor, HORZRES) .
|
|
Ширина кнопки в окне подпись или заголовка окна в пикселях. |
|
Толщина границы размера по периметру окна, размер которую можно изменить в пикселях.
SM_CXSIZEFRAME — это ширина горизонтальной границы, а SM_CYSIZEFRAME — высота вертикальной границы.
Это значение совпадает с SM_CXFRAME. |
|
Системная небольшая ширина значка в пикселях. Небольшие значки обычно отображаются в заголовках окна и в представлении маленьких значков. Дополнительные сведения см. в разделе Размеры значков . |
|
Ширина небольших подпись кнопок в пикселях. |
|
Ширина виртуального экрана в пикселях. Виртуальный экран — это ограничивающий прямоугольник всех мониторов дисплея. Метрика SM_XVIRTUALSCREEN — это координаты левой части виртуального экрана. |
|
Ширина вертикальной полосы прокрутки в пикселях. |
|
Высота границы окна в пикселях. Это эквивалентно значению SM_CYEDGE для окон с трехмерной структурой. |
|
Высота подпись области в пикселях. |
|
Номинальная высота курсора в пикселях. |
|
Это значение совпадает с SM_CYFIXEDFRAME. |
|
Высота прямоугольника вокруг расположения первого щелчка в последовательности двойного щелчка в пикселях. Второй щелчок должен выполняться в прямоугольнике, определенном SM_CXDOUBLECLK, и SM_CYDOUBLECLK, чтобы система рассматривала эти два щелчка двойным щелчком. Два щелчка также должны выполняться в течение указанного времени.
Чтобы задать высоту прямоугольника двойного щелчка, вызовите SystemParametersInfo с SPI_SETDOUBLECLKHEIGHT. |
|
Количество пикселей выше и ниже точки мыши вниз, которую указатель мыши может переместить до начала операции перетаскивания. Это позволяет пользователю легко нажать и отпустить кнопку мыши без непреднамеренного запуска операции перетаскивания. Если это значение отрицательное, оно вычитается из выше точки мыши и добавляется под ним. |
|
Высота трехмерной границы в пикселях. Это трехмерный аналог SM_CYBORDER. |
|
Толщина рамки по периметру окна, которое имеет подпись, но не имеет размеров в пикселях.
SM_CXFIXEDFRAME — высота горизонтальной границы, а SM_CYFIXEDFRAME — ширина вертикальной границы.
Это значение совпадает с SM_CYDLGFRAME. |
|
Высота верхнего и нижнего краев прямоугольника фокуса, рисуемого с помощью DrawFocusRect. Это значение в пикселях.
Windows 2000: Это значение не поддерживается. |
|
Это значение совпадает с SM_CYSIZEFRAME. |
|
Высота клиентской области для полноэкранного окна на основном мониторе дисплея в пикселях. Чтобы получить координаты части экрана, не заслоняемой системной панелью задач или панелью инструментов рабочего стола приложения, вызовите функцию SystemParametersInfo со значением SPI_GETWORKAREA. |
|
Высота горизонтальной полосы прокрутки в пикселях. |
|
Системная большая высота значка в пикселях. Функция LoadIcon может загружать только значки с измерениями, указанными SM_CXICON и SM_CYICON. Дополнительные сведения см. в разделе Размеры значков . |
|
Высота ячейки сетки для элементов в представлении больших значков в пикселях. Каждый элемент помещается в прямоугольник размера SM_CXICONSPACING по SM_CYICONSPACING при упорядочении. Это значение всегда больше или равно SM_CYICON. |
|
Для двухбайтовых версий системы это высота окна кандзи в нижней части экрана в пикселях. |
|
Высота по умолчанию (в пикселях) развернутого окна верхнего уровня на основном мониторе дисплея. |
|
Максимальная высота окна по умолчанию с подпись границами и размерами в пикселях. Эта метрика относится ко всему рабочему столу. Пользователь не может перетащить рамку окна на размер, превышающий эти размеры. Окно может переопределить это значение путем обработки сообщения WM_GETMINMAXINFO . |
|
Высота однострочного меню в пикселях. |
|
Высота меню по умолчанию проверка точечный рисунок метки в пикселях. |
|
Высота кнопок в строке меню, таких как кнопка закрытия дочернего окна, используемая в интерфейсе нескольких документов, в пикселях. |
|
Минимальная высота окна в пикселях. |
|
Высота свернутого окна в пикселях. |
|
Высота ячейки сетки для свернутого окна в пикселях. Каждое свернутое окно помещается в прямоугольник такого размера при упорядочении. Это значение всегда больше или равно SM_CYMINIMIZED. |
|
Минимальная высота отслеживания окна в пикселях. Пользователь не может перетащить рамку окна на размер меньше этих размеров. Окно может переопределить это значение путем обработки сообщения WM_GETMINMAXINFO . |
|
Высота экрана основного монитора в пикселях. Это же значение, полученное путем вызова GetDeviceCaps , как показано ниже: GetDeviceCaps(
hdcPrimaryMonitor, VERTRES) .
|
|
Высота кнопки в окне подпись или заголовка в пикселях. |
|
Толщина границы размера по периметру окна, размер в пикселях.
SM_CXSIZEFRAME — это ширина горизонтальной границы, а SM_CYSIZEFRAME — высота вертикальной границы.
Это значение совпадает с SM_CYFRAME. |
|
Высота небольшого подпись в пикселях. |
|
Системная небольшая высота значка в пикселях. Небольшие значки обычно отображаются в заголовках окна и в представлении маленьких значков. Дополнительные сведения см. в разделе Размеры значков . |
|
Высота маленьких кнопок подпись в пикселях. |
|
Высота виртуального экрана в пикселях. Виртуальный экран — это ограничивающий прямоугольник всех мониторов дисплея. Метрика SM_YVIRTUALSCREEN — это координаты для верхней части виртуального экрана. |
|
Высота растрового изображения стрелки на вертикальной полосе прокрутки в пикселях. |
|
Высота большого пальца в вертикальной полосе прокрутки в пикселях. |
|
Ненулевое значение, если User32.dll поддерживает DBCS; в противном случае — 0. |
|
Ненулевое значение, если установлена отладочная версия User.exe; в противном случае — 0. |
|
Ненулевое значение, если текущая операционная система — Windows 7 или Windows Server 2008 R2 и запущена служба ввода планшетного компьютера; в противном случае — 0. Возвращаемое значение — это битовая маска, указывающая тип входных данных дигитайзера, поддерживаемых устройством. Дополнительные сведения см. в подразделе "Примечания".
Windows Server 2008, Windows Vista и Windows XP/2000: Это значение не поддерживается. |
|
Ненулевое значение, если включены функции диспетчера методов ввода или метода ввода Редактор; в противном случае — значение 0.
SM_IMMENABLED указывает, готова ли система к использованию IME на основе Юникода в приложении Юникода. Чтобы обеспечить работу IME, зависящее от языка, проверка SM_DBCSENABLED и системную кодовую страницу ANSI. В противном случае преобразование ANSI в Юникод может быть выполнено неправильно, или некоторые компоненты, такие как шрифты или параметры реестра, могут отсутствовать. |
|
Ненулевое значение, если в системе есть дигитайзеры; в противном случае — 0.
SM_MAXIMUMTOUCHES возвращает совокупное максимальное количество контактов, поддерживаемых каждым дигитайзером в системе. Если в системе есть только односенсорные дигитайзеры, возвращаемое значение равно 1. Если в системе есть мультисенсорные дигитайзеры, возвращаемое значение — это количество одновременных контактов, которые может предоставить оборудование. Windows Server 2008, Windows Vista и Windows XP/2000: Это значение не поддерживается. |
|
Ненулевое значение, если текущая операционная система — Windows XP, Media Center Edition, если нет, 0. |
|
Ненулевое, если раскрывающееся меню выровнены по правому краю соответствующего пункта строки меню; 0, если меню выровнены по левому краю. |
|
Ненулевое значение, если система включена для иврита и арабского языков, 0, если нет. |
|
Ненулевое значение, если мышь установлена; в противном случае — 0. Это значение редко равно нулю из-за поддержки виртуальных мышей и из-за того, что некоторые системы обнаруживают наличие порта вместо мыши. |
|
Ненулевое значение, если установлена мышь с горизонтальным колесиком прокрутки; в противном случае — 0. |
|
Ненулевое значение, если установлена мышь с вертикальным колесиком прокрутки; в противном случае — 0. |
|
Наименьший значимый бит устанавливается при наличии сети; в противном случае он очищается. Остальные биты зарезервированы для использования в будущем. |
|
Ненулевое значение, если установлены вычислительные расширения Microsoft Windows для пера; ноль в противном случае. |
|
Эта системная метрика используется в среде служб терминалов для определения удаленного управления текущим сеансом сервера терминалов. Его значение не равно нулю, если текущий сеанс управляется удаленно; в противном случае — 0.
Для управления удаленным сеансом можно использовать такие средства управления службами терминалов, как диспетчер служб терминалов (tsadmin.msc) и shadow.exe. При удаленном управлении сеансом другой пользователь может просматривать содержимое этого сеанса и потенциально взаимодействовать с ним. |
|
Эта системная метрика используется в среде служб терминалов. Если вызывающий процесс связан с сеансом клиента служб терминалов, возвращаемое значение не равно нулю. Если вызывающий процесс связан с сеансом консоли служб терминалов, возвращаемое значение равно 0. Windows Server 2003 и Windows XP: Сеанс консоли не обязательно является физической консолью. Дополнительные сведения см. в разделе WTSGetActiveConsoleSessionId. |
|
Ненулевое значение, если все мониторы дисплея имеют одинаковый цветовой формат, в противном случае — значение 0. Два дисплея могут иметь одинаковую битовую глубину, но разные цветовые форматы. Например, красные, зеленые и синие пиксели могут быть закодированы с разным количеством битов, или эти биты могут находиться в разных местах в значении цвета пикселя. |
|
Эту системную метрику следует игнорировать; Он всегда возвращает значение 0. |
|
Номер сборки, если система — Windows Server 2003 R2; в противном случае — 0. |
|
Ненулевое, если пользователю требуется, чтобы приложение предоставляло информацию визуально в ситуациях, когда в противном случае она предоставляла бы информацию только в звуковой форме; в противном случае — 0. |
|
Ненулевое значение, если текущий сеанс завершает работу; в противном случае — 0.
Windows 2000: Это значение не поддерживается. |
|
Ненулевое значение, если компьютер имеет низкопроизводительный (медленный) процессор; в противном случае — 0. |
|
Ненулевое значение, если текущая операционная система является Windows 7 Начальная Edition, Windows Vista Starter или Windows XP Starter Edition; в противном случае — значение 0. |
|
Ненулевое значение, если значения левой и правой кнопок мыши меняются местами; в противном случае — 0. |
|
Отражает состояние режима закрепления: 0 для режима отстыковки и ненулевое значение в противном случае. При изменении этой системной метрики система отправляет широковещательное сообщение через WM_SETTINGCHANGE с systemDockMode в LPARAM. |
|
Ненулевое значение, если текущая операционная система является выпуском Windows XP Tablet PC или если текущей операционной системой является Windows Vista или Windows 7 и запущена служба ввода планшетного компьютера; в противном случае — 0. Параметр SM_DIGITIZER указывает тип входных данных дигитайзера, поддерживаемых устройством под управлением Windows 7 или Windows Server 2008 R2. Дополнительные сведения см. в подразделе "Примечания". |
|
Координаты левой части виртуального экрана. Виртуальный экран — это ограничивающий прямоугольник всех мониторов дисплея. Метрика SM_CXVIRTUALSCREEN — это ширина виртуального экрана. |
|
Координаты для верхней части виртуального экрана. Виртуальный экран — это ограничивающий прямоугольник всех мониторов дисплея. Метрика SM_CYVIRTUALSCREEN — это высота виртуального экрана. |
Возвращаемое значение
Тип: int
Если функция выполняется успешно, возвращаемым значением будет запрошенная системная метрика или параметр конфигурации.
Если функция завершается сбоем, возвращаемое значение равно 0. GetLastError не предоставляет расширенные сведения об ошибке.
Комментарии
Системные метрики могут отличаться от отображения к отображению.
GetSystemMetrics(SM_CMONITORS) подсчитывает только видимые мониторы дисплея. Это отличается от EnumDisplayMonitors, в котором перечисляются как видимые мониторы отображения, так и невидимые псевдомониторы, связанные с драйверами зеркального отображения. Невидимый псевдомониометр связан с псевдоустройством, используемым для зеркало рисования приложения для удаленного взаимодействия или других целей.
Параметр SM_ARRANGE указывает, как система упорядочивает свернутые окна и состоит из начальной позиции и направления. Начальная позиция может иметь одно из следующих значений.
Значение | Значение |
---|---|
ARW_BOTTOMLEFT | Начните в левом нижнем углу экрана. Позиция по умолчанию. |
ARW_BOTTOMRIGHT | Начните с правого нижнего угла экрана. Эквивалентно ARW_STARTRIGHT. |
ARW_TOPLEFT | Начните с левого верхнего угла экрана. Эквивалентно ARW_STARTTOP. |
ARW_TOPRIGHT | Начните с правого верхнего угла экрана. Эквивалент ARW_STARTTOP | SRW_STARTRIGHT. |
Направление размещения свернутых окон может быть одним из следующих значений.
Значение | Значение |
---|---|
ARW_DOWN | Расположите по вертикали сверху вниз. |
ARW_HIDE | Скройте свернутые окна, переместив их за видимую область экрана. |
ARW_LEFT | Расположите по горизонтали слева направо. |
ARW_RIGHT | Расположите по горизонтали справа налево. |
ARW_UP | Расположите по вертикали снизу вверх. |
Параметр SM_DIGITIZER указывает тип дигитайзеров, установленных на устройстве под управлением Windows 7 или Windows Server 2008 R2. Возвращаемое значение — это битовая маска, задающая одно или несколько следующих значений.
Значение | Значение |
---|---|
NID_INTEGRATED_TOUCH 0x01 |
Устройство имеет встроенный сенсорный дигитайзер. |
NID_EXTERNAL_TOUCH 0x02 |
Устройство имеет внешний дигитайзер сенсорного ввода. |
NID_INTEGRATED_PEN 0x04 |
Устройство имеет встроенный дигитайзер пера. |
NID_EXTERNAL_PEN 0x08 |
Устройство имеет внешний дигитайзер пера. |
NID_MULTI_INPUT 0x40 |
Устройство поддерживает несколько источников входных данных дигитайзера. |
NID_READY 0x80 |
Устройство готово к приему входных данных дигитайзера. |
Этот API не учитывает DPI и не должен использоваться, если вызывающий поток учитывает DPI для каждого монитора. Версию этого API с поддержкой DPI см. в разделе GetSystemMetricsForDPI. Дополнительные сведения об осведомленности о DPI см. в документации по Windows High DPI.
Примеры
В следующем примере функция GetSystemMetrics используется для определения установки мыши и переключения кнопок мыши. В примере также используется функция SystemParametersInfo для получения порогового значения и скорости мыши. Эта информация отображается в консоли.
#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]);
}
}
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-sysparams-ext-l1-1-0 (представлено в Windows 8) |