Функция GetSystemMetrics

Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

GetSystemMetrics возвращает информацию относительно различных параметров в Windows. Большинство их имеет дело с размерами различных объектов (экрана, значков, курсоров, и т.д). Возвращаемое значение функции зависит от значения, указанного для nIndex. Имейте в виду, что все размеры (ширина и высота) измеряются в пикселах

Параметры

nIndex
Флажки, определяющие определенную часть информации
SM_CXSCREEN = 0
Возвращает ширину экрана
SM_CYSCREEN = 1
Возвращает высоту экрана
SM_CXVSCROLL = 2
только для Win 95/98: Возвращает ширину вертикальной полосы прокрутки
SM_CYHSCROLL = 3
только для Win 95/98: Возвращает высоту горизонтальной полосы прокрутки
SM_CYCAPTION = 4
Возвращает высоту нормальной области надписи
SM_CXBORDER = 5
Возвращает ширину границы окна
SM_CYBORDER = 6
Возвращает высоту границы окна
SM_CXDLGFRAME = 7
Возвращает ширину диалогового окна
SM_CYDLGFRAME = 8
Возвращает высоту диалогового окна
SM_CYVTHUMB = 9
Возвращает высоту вертикального бегунка полосы прокрутки
SM_CXHTHUMB = 10
Возвращает ширину горизонтального бегунка полосы прокрутки
SM_CXICON = 11
Возвращает заданную по умолчанию ширину значка
SM_CYICON = 12
Возвращает заданную по умолчанию высоту значка
SM_CXCURSOR = 13
Win NT: Возвращает ширину курсора. Win 95/98: Возвращает ширину стандартного точечного рисунка курсора
SM_CYCURSOR = 14
Возвращает высоту курсора
SM_ARRANGE = 56
только для Win 95/98: Возвращает метод отображения свернутых окон. Возвращаемое значение - комбинация двух из следующих флажков, одно определяет исходную позицию для свернутых значков и другое определяет направление, в котором новые значки будут добавлены:
ARW_BOTTOMLEFT = 0
Начало позиции, помещающее значки в левой нижней части экрана
ARW_BOTTOMRIGHT = 1
Начало позиции, помещающее значки в правой нижней части экрана
ARW_DOWN = 4
Добавляет новые значки ниже существующих
ARW_HIDE = 8
Не размещает значки на экране (то есть, скрывает их)
ARW_LEFT = 0
Добавляет новые значки слева от существующих
ARW_RIGHT = 4
Добавляет новые значки справа от существующих
ARW_STARTRIGHT = 1
Аналогично ARW_BOTTOMRIGHT
ARW_STARTTOP = 2
Аналогично ARW_TOPLEFT.
ARW_TOPLEFT = 2
Начало позиции, помещающее значки в верхнем левом углу экрана
ARW_TOPRIGHT = 3
Начало позиции, помещающее значки в верхнем правом углу экрана
ARW_UP = 0
Добавляет новые значки выше существующих
SM_CLEANBOOT = 67
только для Win 95/98: Возвращает значение, определяющее режим загрузки. 0 - нормальная, 1 - безопасный режим, 2 - безопасный режим с сетевой поддержкой
SM_CMOUSEBUTTONS = 43
Возвращает число кнопок мыши. Ноль, если мышь отсутсвует
SM_CMETRICS = 44
только для Win 95/98: Возвращает количество доступных параметров системы
SM_CXDOUBLECLK = 36
Ширина прямоугольника, в пределах которого оба щелчка мыши должны быть опознаны,как двойной щелчок
SM_CXDRAG = 68
Возвращает минимальную ширину,при которой курсор должен двигаться, чтобы начать операцию перетаскивания
SM_CXEDGE = 45
только для Win 95/98: Возвращает ширину 3D границы окна
SM_CXFRAME = 32
Возвращает ширину границы окна изменяемого размера
SM_CXFULLSCREEN = 16
Возвращает ширину клиентской области полноэкранного окна
SM_CXHSCROLL = 21
только для Win 95/98: Возвращает ширину точечного рисунка стрелки на горизонтальной полосе прокрутки
SM_CXICONSPACING = 38
Возвращает ширину ячейки для позиционирования значков
SM_CXMAXIMIZED = 61
только для Win 95/98: Возвращает заданную по умолчанию ширину развернутого окна
SM_CXMAXTRACK = 59
только для Win 95/98: Возвращает заданную по умолчанию максимальную ширину,если пользователю разрешено изменять размеры окна
SM_CXMENUCHECK = 71
только для Win 95/98: Возвращает ширину заданного по умолчанию точечного рисунка метки меню
SM_CXMENUSIZE = 54
только для Win 95/98: Возвращает ширину кнопки строки меню
SM_CXMIN = 28
Возвращает минимальную ширину окна
SM_CXMINIMIZED = 57
только для Win 95/98: Возвращает ширину нормально свернутого окна
SM_CXMINSPACING = 47
только для Win 95/98: Возвращает ширину прямоугольника ячейки сетки используя позицию свернутого окна
SM_CXMINTRACK = 34
только для Win 95/98: Возвращает заданную по умолчанию минимальную ширину
SM_CXSIZE = 30
Возвращает ширину точечного рисунка в заголовке
SM_CXSIZEFRAME = 32
только для Win 95/98: Возвращает ширину толстой рамки окна
SM_CXSMICON = 49
только для Win 95/98: Возвращает рекомендуемую ширину для маленьких значков
SM_CXSMSIZE = 52
только для Win 95/98: Возвращает ширину маленькой надписи кнопки
SM_CYDOUBLECLK = 37
Возвращает высоту прямоугольника, в пределах которого оба щелчка мыши должны быть опознаны как двойной щелчок
SM_CYDRAG = 69
Возвращает минимальную высоту,на которую курсор должен сдвинуться, чтобы начать операцию перетаскивания
SM_CYEDGE = 46
только для Win 95/98: Возвращает высоту трехмерной границы окна
SM_CYFRAME = 33
Возвращает высоту границы окна изменяемого размера
SM_CYFULLSCREEN = 17
Возвращает высоту клиентской области полноэкранного окна
SM_CYICONSPACING = 39
Возвращает высоту ячейки для позиционирования значков
SM_CYKANJIWINDOW = 18
Возвращает высоту окна Kanji (для версий набора символов с двойным байтом Windows)
SM_CYMAXIMIZED = 62
только для Win 95/98: Возвращает заданную по умолчанию высоту развернутого окна
SM_CYMAXTRACK = 60
только для Win 95/98: Возвращает заданную по умолчанию максимальную высоту,если пользователю позволено изменять размеры окна
SM_CYMENU = 15
Возвращает высоту отдельной строки меню
SM_CYMENUCHECK = 72
только для Win 95/98: Возвращает высоту заданного по умолчанию точечного рисунка метки меню
SM_CYMENUSIZE = 55
только для Win 95/98: Возвращает высоту кнопки строки меню
SM_CYMIN = 29
Возвращает минимальную высоту окна
SM_CYMINIMIZED = 58
только для Win 95/98: Возвращает высоту нормально свернутого окна
SM_CYMINSPACING = 48
только для Win 95/98: Возвращает высоту прямоугольника ячейки сетки используемой для позиционирования свернутых окон
SM_CYMINTRACK = 35
только для Win 95/98: Возвращает заданную по умолчанию минимальную высоту, если пользователю позволено изменять размеры окна
SM_CYSIZE = 31
Возвращает высоту точечного рисунка области заголовка.
SM_CYSIZEFRAME = 33
только для Win 95/98: Возвращает высоту толстой рамки окна
SM_CYSMCAPTION = 51
только для Win 95/98: Возвращает высоту маленькой области заголовка
SM_CYSMICON = 50
только для Win 95/98: Возвращает рекомендуемую высоту для маленьких значков
SM_CYSMSIZE = 53
только для Win 95/98: Возвращает высоту кнопки маленькой надписи
SM_CYVSCROLL = 20
только для Win 95/98: Возвращает высоту точечного рисунка стрелки на вертикальной полосе прокрутки
SM_DBCSENABLED = 42
Возвращает ненулевое значение, если версия набора символов с двойным байтом USER.EXE установлена, 0 если нет
SM_DEBUG = 22
Возвращает ненулевое значение, если версия отладки USER.EXE установлена, 0 если нет
SM_MENUDROPALIGNMENT = 40
Возвращает ненулевое значение, если всплывающие меню появляются справа, 0 если слева
SM_MIDEASTENABLED = 74
Возвращает ненулевое значение, если система использует еврейские и арабские языки, 0 если нет
SM_MOUSEPRESENT = 19
Возвращает ненулевое значение, если мышь установлена и присутствует, 0 если нет
SM_NETWORK = 63
Установка &H1 бит возвращаемого значения, если сеть установлена. Все другие биты возвращаемого значения зарезервированы и неопределенны
SM_PENWINDOWS = 41
Return a non-zero value if the Microsoft Windows for Pen computing extensions are installed, 0 if not
SM_SECURE = 44
Возвращает ненулевое значение, если защита присутствует и активна, 0 если нет
SM_SHOWSOUNDS = 70
Возвращает ненулевое значение, если приложение показывает визуальную команду вызова программы для всех звуков, 0 если нет
SM_SLOWMACHINE = 73
Возвращает ненулевое значение, если система имеет медленный процессор, 0 если нет
SM_SWAPBUTTON = 23
Возвращает ненулевое значение, если левые и правые кнопки мыши поменялись, 0 если нет

Пример

' Отобразим разрешающую способность (размер) экрана
' и некоторую информацию относительно
' конфигурации окон
Dim xres As Long, yres As Long ' получим расширения экрана
Dim hasmouse As Long, numbuttons As Long  ' присутствует ли мышка и число ее кнопок

' Отобразим разрешение экрана - то есть, ширину и высоту экрана
xres = GetSystemMetrics(SM_CXSCREEN)
yres = GetSystemMetrics(SM_CYSCREEN)
Debug.Print "Экран имеет "; xres; "пикселов в ширину и "; yres; "пикселов в высоту"
' Делаем форму на весь экран
Move 0, 0, _
        ScaleX(wid, vbPixels, vbTwips), _
        ScaleY(hgt, vbPixels, vbTwips)

' Отобразим число кнопок на мыши, если мышь присутствует
hasmouse = GetSystemMetrics(SM_MOUSEPRESENT)
numbuttons = GetSystemMetrics(SM_CMOUSEBUTTONS)
If hasmouse = 0 Then
  Debug.Print "Мышь не установлена"
Else
  Debug.Print "Мышь с "; numbuttons; "кнопками"
End If

Смотри также

SystemParametersInfo

Категория

Доступ к параметрам системы