zoukankan      html  css  js  c++  java
  • GetSystemMetrics 以及其参数

    前言

        在写屏幕截图程序的时候,为了适应多屏场景,需要一些屏幕的信息,于是查到了 GetSystemMetrics 函数,次函数的参数很多,所以就打算把这些翻译一下,翻译主要是用的Google翻译,如有不妥的支持还请包涵。同时再次特别感谢:Google 翻译。

    GetSystemMetrics 功能

    检索指定的系统度量标准或系统配置设置。

    请注意,GetSystemMetrics检索的所有维度都以像素为单位。

     

    参数

    要检索的系统度量标准或配置设置。 此参数可以是以下值之一。 请注意,所有SM_CX *值都是宽度,所有SM_CY *值都是高度。 另请注意,所有用于返回布尔数据的设置都表示TRUE为任何非零值,FALSE表示为零值。

     

    MSDN 原文链接:

    https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms724385(v=vs.85).aspx

     

    解释

    SM_ARRANGE

    56

    指定系统如何排列最小化窗口的标志。 有关更多信息,请参阅本主题中的"备注"部分

    SM_CLEANBOOT

    67

    指示系统的启动方式:

    • 0 Normal boot
    • 1 Fail-safe boot
    • 2 Fail-safe with network boot

    故障安全启动(也称为SafeBoot,安全模式或干净启动)会绕过用户启动文件

    SM_CMONITORS

    80

    桌面上的显示器数量。 有关更多信息,请参阅本主题中的"备注"部分。

    SM_CMOUSEBUTTONS

    43

    鼠标上的按钮数量,如果没有安装鼠标,则为零。

    SM_CONVERTIBLESLATEMODE

    0x2003

    反映笔记本电脑或平板模式的状态,0表示平板模式,否则为非零。 当此系统指标发生变化时,系统通过WM_SETTINGCHANGE在LPARAM中发送带有"ConvertibleSlateMode"的广播消息。 请注意,此系统指标不适用于台式PC。 在这种情况下,请使用GetAutoRotationState。

    SM_CXBORDER

    5

    窗口边框的宽度(以像素为单位)。 这相当于具有3-D外观的窗口的SM_CXEDGE值。

    SM_CXCURSOR

    13

    光标的宽度,以像素为单位。 系统无法创建其他大小的游标。

    SM_CXDLGFRAME

    7

    同 SM_CXFIXEDFRAME.

    SM_CXDOUBLECLK

    36

    双击序列中第一次单击位置周围的矩形宽度(以像素为单位)。 第二次单击必须出现在由SM_CXDOUBLECLK和SM_CYDOUBLECLK定义的矩形内,以便系统考虑双击两次单击。 两次单击也必须在指定时间内发生。

    要设置双击矩形的宽度,请使用SPI_SETDOUBLECLKWIDTH调用SystemParametersInfo。

    SM_CXDRAG

    68

    鼠标指针在拖动操作开始之前可以移动的鼠标指向任意一侧的像素数。 这允许用户轻松地单击和释放鼠标按钮而不会无意中开始拖动操作。 如果此值为负,则从鼠标按下点的左侧减去该值并将其添加到其右侧。

    SM_CXEDGE

    45

    三维边框的宽度(以像素为单位)。 该指标是SM_CXBORDER的3-D对应物。

    SM_CXFIXEDFRAME

    7

    围绕窗口周边的框架的厚度,其具有标题但不是相当大的像素。 SM_CXFIXEDFRAME是水平边框的高度,SM_CYFIXEDFRAME是垂直边框的宽度。

    该值与SM_CXDLGFRAME相同。

    SM_CXFOCUSBORDER

    83

    DrawFocusRect绘制的焦点矩形的左右边缘的宽度。 该值以像素为单位。

    Windows 2000:不支持此值。

    SM_CXFRAME

    32

    同 SM_CXSIZEFRAME.

    SM_CXFULLSCREEN

    16

    主显示器监视器上全屏窗口的客户端区域宽度(以像素为单位)。 要获取未被系统任务栏或应用程序桌面工具栏遮挡的屏幕部分的坐标,请使用SPI_GETWORKAREA值调用SystemParametersInfo函数。

    SM_CXHSCROLL

    21

    水平滚动条上箭头位图的宽度(以像素为单位)。

    SM_CXHTHUMB

    10

    水平滚动条中拇指框的宽度,以像素为单位。

    SM_CXICON

    11

    图标的默认宽度(以像素为单位)。 LoadIcon函数只能加载具有SM_CXICON和SM_CYICON指定维度的图标。

    SM_CXICONSPACING

    38

    大图标视图中项目的网格单元格的宽度,以像素为单位。 安排时,每个项目都适合SM_CYICONSPACING的SM_CXICONSPACING大小的矩形。 该值始终大于或等于SM_CXICON。

    SM_CXMAXIMIZED

    61

    主显示器上最大化顶级窗口的默认宽度(以像素为单位)。

    SM_CXMAXTRACK

    59

    具有标题和大小调整边框的窗口的默认最大宽度(以像素为单位)。 此指标指的是整个桌面。 用户无法将窗口框架拖动到大于这些尺寸的尺寸。 窗口可以通过处理WM_GETMINMAXINFO消息来覆盖此值。

    SM_CXMENUCHECK

    71

    默认菜单复选标记位图的宽度(以像素为单位)。

    SM_CXMENUSIZE

    54

    菜单栏按钮的宽度,例如多文档界面中使用的子窗口关闭按钮,以像素为单位。

    SM_CXMIN

    28

    窗口的最小宽度(以像素为单位)。

    SM_CXMINIMIZED

    57

    最小化窗口的宽度(以像素为单位)。

    SM_CXMINSPACING

    47

    最小化窗口的网格单元格的宽度(以像素为单位)。 每个最小化的窗口在排列时都适合这个尺寸的矩形。 该值始终大于或等于SM_CXMINIMIZED。

    SM_CXMINTRACK

    34

    窗口的最小跟踪宽度(以像素为单位)。 用户无法将窗口框架拖动到小于这些尺寸的尺寸。 窗口可以通过处理WM_GETMINMAXINFO消息来覆盖此值。

    SM_CXPADDEDBORDER

    92

    标题窗口的边框填充量(以像素为单位)。

    Windows XP / 2000:不支持此值。

    SM_CXSCREEN

    0

    主显示器屏幕的宽度,以像素为单位。 这是通过调用GetDeviceCaps获得的相同值,如下所示:GetDeviceCaps(hdcPrimaryMonitor,HORZRES)。

    SM_CXSIZE

    30

    窗口标题或标题栏中按钮的宽度(以像素为单位)。

    SM_CXSIZEFRAME

    32

    围绕窗口周边的大小调整边框的粗细,可以调整大小,以像素为单位。 SM_CXSIZEFRAME是水平边框的宽度,SM_CYSIZEFRAME是垂直边框的高度。

    该值与SM_CXFRAME相同。

    SM_CXSMICON

    49

    建议的小图标宽度(以像素为单位)。 小图标通常出现在窗口标题和小图标视图中。

    SM_CXSMSIZE

    52

    小字幕按钮的宽度,以像素为单位。

    SM_CXVIRTUALSCREEN

    78

    虚拟屏幕的宽度(以像素为单位)。 虚拟屏幕是所有显示器的边界矩形。 SM_XVIRTUALSCREEN度量标准是虚拟屏幕左侧的坐标。

    SM_CXVSCROLL

    2

    垂直滚动条的宽度(以像素为单位)。

    SM_CYBORDER

    6

    窗口边框的高度(以像素为单位)。 这相当于具有3-D外观的窗口的SM_CYEDGE值。

    SM_CYCAPTION

    4

    标题区域的高度,以像素为单位。

    SM_CYCURSOR

    14

    光标的高度,以像素为单位。 系统无法创建其他大小的游标。

    SM_CYDLGFRAME

    8

    同 SM_CYFIXEDFRAME.

    SM_CYDOUBLECLK

    37

    双击序列中第一次单击位置周围的矩形高度,以像素为单位。 第二次单击必须在SM_CXDOUBLECLK和SM_CYDOUBLECLK定义的矩形内进行,系统才能考虑双击两次单击。 两次单击也必须在指定时间内发生。

    要设置双击矩形的高度,请使用SPI_SETDOUBLECLKHEIGHT调用SystemParametersInfo。

    SM_CYDRAG

    69

    在拖动操作开始之前鼠标指针可以移动的鼠标按下点上方和下方的像素数。 这允许用户轻松地单击和释放鼠标按钮而不会无意中开始拖动操作。 如果此值为负值,则从鼠标按下点上方减去它并在其下方添加。

    SM_CYEDGE

    46

    三维边框的高度(以像素为单位)。 这是SM_CYBORDER的3D对应物。

    SM_CYFIXEDFRAME

    8

    围绕窗口周边的框架的厚度,其具有标题但不是相当大的像素。 SM_CXFIXEDFRAME是水平边框的高度,SM_CYFIXEDFRAME是垂直边框的宽度。

    该值与SM_CYDLGFRAME相同。

    SM_CYFOCUSBORDER

    84

    DrawFocusRect绘制的焦点矩形的顶部和底部边缘的高度。 该值以像素为单位。

    Windows 2000:不支持此值。

    SM_CYFRAME

    33

    同 SM_CYSIZEFRAME.

    SM_CYFULLSCREEN

    17

    主显示器监视器上全屏窗口的客户端区域高度(以像素为单位)。 要使屏幕部分的坐标不被系统任务栏或应用程序桌面工具栏遮挡,请使用SPI_GETWORKAREA值调用SystemParametersInfo函数。

    SM_CYHSCROLL

    3

    水平滚动条的高度,以像素为单位。

    SM_CYICON

    12

    图标的默认高度(以像素为单位)。 LoadIcon函数只能加载尺寸为SM_CXICON和SM_CYICON的图标。

    SM_CYICONSPACING

    39

    大图标视图中项目的网格单元格的高度,以像素为单位。 安排时,每个项目都适合SM_CYICONSPACING的SM_CXICONSPACING大小的矩形。 该值始终大于或等于SM_CYICON。

    SM_CYKANJIWINDOW

    18

    对于系统的双字节字符集版本,这是屏幕底部的汉字窗口的高度,以像素为单位。

    SM_CYMAXIMIZED

    62

    主显示监视器上最大化顶级窗口的默认高度(以像素为单位)。

    SM_CYMAXTRACK

    60

    具有标题和大小调整边框的窗口的默认最大高度(以像素为单位)。 此指标指的是整个桌面。 用户无法将窗口框架拖动到大于这些尺寸的尺寸。 窗口可以通过处理WM_GETMINMAXINFO消息来覆盖此值。

    SM_CYMENU

    15

    单行菜单栏的高度(以像素为单位)。

    SM_CYMENUCHECK

    72

    默认菜单复选标记位图的高度(以像素为单位)。

    SM_CYMENUSIZE

    55

    菜单栏按钮的高度,例如多文档界面中使用的子窗口关闭按钮,以像素为单位。

    SM_CYMIN

    29

    窗口的最小高度(以像素为单位)。

    SM_CYMINIMIZED

    58

    最小化窗口的高度(以像素为单位)。

    SM_CYMINSPACING

    48

    最小化窗口的网格单元格的高度,以像素为单位。 每个最小化的窗口在排列时都适合这个尺寸的矩形。 此值始终大于或等于SM_CYMINIMIZED。

    SM_CYMINTRACK

    35

    窗口的最小跟踪高度(以像素为单位)。 用户无法将窗口框架拖动到小于这些尺寸的尺寸。 窗口可以通过处理WM_GETMINMAXINFO消息来覆盖此值。

    SM_CYSCREEN

    1

    主显示器屏幕的高度,以像素为单位。 这是通过调用GetDeviceCaps获得的相同值,如下所示:GetDeviceCaps(hdcPrimaryMonitor,VERTRES)。

    SM_CYSIZE

    31

    窗口标题或标题栏中按钮的高度(以像素为单位)。

    SM_CYSIZEFRAME

    33

    围绕窗口周边的大小调整边框的粗细,可以调整大小,以像素为单位。 SM_CXSIZEFRAME是水平边框的宽度,SM_CYSIZEFRAME是垂直边框的高度。

    该值与SM_CYFRAME相同。

    SM_CYSMCAPTION

    51

    小标题的高度,以像素为单位。

    SM_CYSMICON

    50

    建议的小图标高度(以像素为单位)。 小图标通常出现在窗口标题和小图标视图中。

    SM_CYSMSIZE

    53

    小字幕按钮的高度,以像素为单位。

    SM_CYVIRTUALSCREEN

    79

    虚拟屏幕的高度,以像素为单位。 虚拟屏幕是所有显示器的边界矩形。 SM_YVIRTUALSCREEN指标是虚拟屏幕顶部的坐标。

    SM_CYVSCROLL

    20

    垂直滚动条上箭头位图的高度,以像素为单位。

    SM_CYVTHUMB

    9

    垂直滚动条中拇指框的高度,以像素为单位。

    SM_DBCSENABLED

    42

    如果User32.dll支持DBCS,则为非零; 否则,0。

    SM_DEBUG

    22

    如果安装了User.exe的调试版本,则为非零; 否则,0。

    SM_DIGITIZER

    94

    如果当前操作系统是Windows 7或Windows Server 2008 R2且Tablet PC输入服务已启动,则为非零; 返回值是一个位掩码,指定设备支持的数字化仪输入的类型。 有关更多信息,请参阅备注。

    Windows Server 2008,Windows Vista和Windows XP / 2000:不支持此值。

    SM_IMMENABLED

    82

    如果启用了输入法管理器/输入法编辑器功能,则为非零; 否则,0。

    SM_IMMENABLED指示系统是否已准备好在Unicode应用程序上使用基于Unicode的IME。 要确保依赖于语言的IME正常工作,请检查SM_DBCSENABLED和系统ANSI代码页。 否则,可能无法正确执行ANSI到Unicode转换,或者可能不存在某些组件(如字体或注册表设置)。

    SM_MAXIMUMTOUCHES

    95

    如果系统中有数字化仪,则为非零; 否则,0。

    SM_MAXIMUMTOUCHES返回系统中每个数字化仪支持的最大联系数的最大值。 如果系统只有单触式数字化仪,则返回值为1.如果系统具有多点触摸数字化仪,则返回值是硬件可以提供的同时触点数。

    Windows Server 2008,Windows Vista和Windows XP / 2000:不支持此值。

    SM_MEDIACENTER

    87

    如果当前操作系统是Windows XP,Media Center Edition则为非零,否则为0。

    SM_MENUDROPALIGNMENT

    40

    如果下拉菜单与相应的菜单栏项右对齐,则为非零; 如果菜单左对齐,则为0。

    SM_MIDEASTENABLED

    74

    如果系统启用了希伯来语和阿拉伯语,则为非零,否则为0。

    SM_MOUSEPRESENT

    19

    如果安装了鼠标,则为非零; 否则,0。该值很少为零,因为支持虚拟鼠标,并且因为某些系统检测到端口的存在而不是鼠标的存在。

    SM_MOUSEHORIZONTALWHEELPRESENT

    91

    如果安装了带水平滚轮的鼠标,则为非零; 否则为0。

    SM_MOUSEWHEELPRESENT

    75

    如果安装了带垂直滚轮的鼠标,则为非零; 否则为0。

    SM_NETWORK

    63

    如果存在网络,则设置最低有效位; 否则,它被清除。 其他位保留供将来使用。

    SM_PENWINDOWS

    41

    如果安装了Microsoft Windows for Pen计算扩展,则为非零; 否则为零。

    SM_REMOTECONTROL

    0x2001

    此系统度量标准用于终端服务环境,以确定是否正在远程控制当前的终端服务器会话。 如果当前会话是远程控制的,它的值是非零的; 否则,0。

    您可以使用终端服务管理工具(如终端服务管理器(tsadmin.msc)和shadow.exe)来控制远程会话。 当远程控制会话时,另一个用户可以查看该会话的内容并可能与其进行交互。

    SM_REMOTESESSION

    0x1000

    此系统度量标准用于终端服务环境中。 如果调用进程与终端服务客户端会话关联,则返回值为非零。 如果调用进程与终端服务控制台会话关联,则返回值为0。

    Windows Server 2003和Windows XP:控制台会话不一定是物理控制台。 有关更多信息,请参阅WTSGetActiveConsoleSessionId。

    SM_SAMEDISPLAYFORMAT

    81

    如果所有显示器具有相同的颜色格式,则为非零,否则为0.两个显示器可以具有相同的位深度,但颜色格式不同。 例如,红色,绿色和蓝色像素可以用不同数量的比特编码,或者那些比特可以位于像素颜色值中的不同位置。

    SM_SECURE

    44

    应忽略此系统指标; 它总是返回0。

    SM_SERVERR2

    89

    如果系统是Windows Server 2003 R2,则为内部版本号; 否则,0。

    SM_SHOWSOUNDS

    70

    非零,如果用户要求应用程序以可视方式呈现信息,否则它将仅以可听形式呈现信息; 否则,0。

    SM_SHUTTINGDOWN

    0x2000

    如果当前会话正在关闭,则为非零; 否则,0。

    Windows 2000:不支持此值。

    SM_SLOWMACHINE

    73

    如果计算机具有低端(慢)处理器,则为非零; 否则,0。

    SM_STARTER

    88

    如果当前操作系统是Windows 7 Starter Edition,Windows Vista Starter或Windows XP Starter Edition,则为非零; 否则,0。

    SM_SWAPBUTTON

    23

    如果交换了鼠标左键和右键的含义,则为非零; 否则,0。

    SM_SYSTEMDOCKED

    0x2004

    反映停靠模式的状态,0表示未锁定模式,否则为非零。 当此系统指标发生变化时,系统通过WM_SETTINGCHANGE通过LPARAM中的"SystemDockMode"发送广播消息。

    SM_TABLETPC

    86

    如果当前操作系统是Windows XP Tablet PC版本,或者当前操作系统是Windows Vista或Windows 7且Tablet PC输入服务已启动,则为非零; SM_DIGITIZER设置指示运行Windows 7或Windows Server 2008 R2的设备支持的数字化仪输入类型。 有关更多信息,请参阅备注。

    SM_XVIRTUALSCREEN

    76

    虚拟屏幕左侧的坐标。 虚拟屏幕是所有显示器的边界矩形。 SM_CXVIRTUALSCREEN指标是虚拟屏幕的宽度。

    SM_YVIRTUALSCREEN

    77

    虚拟屏幕顶部的坐标。 虚拟屏幕是所有显示器的边界矩形。 SM_CYVIRTUALSCREEN指标是虚拟屏幕的高度。

     

    返回值

    类型:

    输入:int

     

    如果函数成功,则返回值是请求的系统度量标准或配置设置。

    如果函数失败,则返回值为0. GetLastError不提供扩展错误信息。

     

    备注

    系统指标因显示而异。

    GetSystemMetrics(SM_CMONITORS)仅计算可见的显示监视器。 这与EnumDisplayMonitors不同,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。 有关此API的DPI感知版本,请参阅GetSystemMetricsForDPI。 有关DPI感知的详细信息,请参阅Windows High DPI文档。

  • 相关阅读:
    el-select下拉框选项太多导致卡顿,使用下拉框分页来解决
    vue+elementui前端添加数字千位分割
    Failed to check/redeclare auto-delete queue(s)
    周末啦,做几道面试题放松放松吧!
    idea快捷键
    解决flink运行过程中报错Could not allocate enough slots within timeout of 300000 ms to run the job. Please make sure that the cluster has enough resources.
    用.net平台实现websocket server
    MQTT实战3
    Oracle 查看当前用户下库里所有的表、存储过程、触发器、视图
    idea从svn拉取项目不识别svn
  • 原文地址:https://www.cnblogs.com/hisdar/p/9473782.html
Copyright © 2011-2022 走看看