# SysGet

获取系统对象的尺寸和其他系统属性.

    Value := SysGet(Property)

## 参数

Property

  类型: 整数

  从下面的表格中指定一个数字来检索对应的值.

## 返回值

类型: 整数

此函数返回指定的系统属性的值.

## 常用的

数字 | 描述
--- | ---
80 | SM_CMONITORS: 桌面上监视器数目(不包括 "不显示的伪监视器").
43 | SM_CMOUSEBUTTONS: 鼠标按钮的数目(没有安装鼠标则为 0).
16, 17 | SM_CXFULLSCREEN, SM_CYFULLSCREEN: 在主监视器上全屏窗口工作区的宽度和高度, 单位为像素.
61, 62 | SM_CXMAXIMIZED, SM_CYMAXIMIZED: 主监视器上最大化的顶层窗口的尺寸, 单位为像素.
59, 60 | SM_CXMAXTRACK, SM_CYMAXTRACK: 包含标题和可调整大小边框的窗口的默认最大尺寸, 单位为像素. 这个度量指向整个桌面. 用户无法拖动窗口边框超过这些尺寸指定的大小.
28, 29 | SM_CXMIN, SM_CYMIN: 窗口的最小宽度和高度, 单位为像素.
57, 58 | SM_CXMINIMIZED, SM_CYMINIMIZED: 最小化窗口的尺寸, 单位为像素.
34, 35 | SM_CXMINTRACK, SM_CYMINTRACK: 窗口的最小跟踪宽度和高度, 单位为像素. 用户无法拖动窗口边框小于这些尺寸指定的大小. 窗口可以通过处理 WM_GETMINMAXINFO 消息来覆盖这些值.
0, 1 | SM_CXSCREEN, SM_CYSCREEN: 主监视器屏幕的宽度和高度, 单位为像素. 这两个值等同于内置变量 A_ScreenWidth 和 A_ScreenHeight.
78, 79 | SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN: 虚拟屏幕的宽度和高度, 单位为像素. 虚拟屏幕是所有监视器的边框. SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN 度量是虚拟屏幕左上角的坐标.
19 | SM_MOUSEPRESENT: 如果安装了鼠标则为非零值, 否则为零.
75 | SM_MOUSEWHEELPRESENT: 如果安装了带滚轮的鼠标则为非零值, 否则为零.
63 | SM_NETWORK: 网络存在时设置最低的有效位, 否则进行清除. 其他位保留供将来使用.
8193 | SM_REMOTECONTROL: 系统度量用于终端服务环境. 如果当前的会话是由远程控制的则它的值不为零; 否则为零.
4096 | SM_REMOTESESSION: 系统度量用于终端服务环境. 如果调用线程与终端服务的客户端会话关联, 则返回非零值. 如果调用线程与终端服务的控制台会话关联, 则返回零. 控制台会话不一定是实际的控制台.
70 | SM_SHOWSOUNDS: 如果用户要求一个原本只提供声音信息的场合中同时提供可视化信息时为非零值, 否则为零.
8192 | SM_SHUTTINGDOWN: 当前会话正在关闭时为非零值, 否则为零. Windows 2000: 获取的值总是 0.
23 | SM_SWAPBUTTON: 交换了鼠标左右键的功能时为非零值, 否则为零.
76, 77 | SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN: 虚拟屏幕左边和上面的坐标. 虚拟屏幕是所有监视器的边框. 与之相比, SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN 度量(较远的上面) 为虚拟屏幕的宽度和高度.

## 不常用的

数字 | 描述
--- | ---
56 | SM_ARRANGE: 指定系统排列最小化窗口方式的标志. 请参阅 MSDN 了解更多信息.
67 | SM_CLEANBOOT: 指定系统启动的方式: 0 = 正常启动 1 = 失败-安全模式启动 2 = 失败-带网络的安全模式启动
5, 6 | SM_CXBORDER, SM_CYBORDER: 窗口边框的宽度和高度, 单位为像素. 对于 3D 外观的窗口, 这相当于它的 SM_CXEDGE 值.
13, 14 | SM_CXCURSOR, SM_CYCURSOR: 光标的宽度和高度, 单位为像素. 系统无法创建其他大小的光标..
36, 37 | SM_CXDOUBLECLK, SM_CYDOUBLECLK: 在双击序列中首次点击位置周围矩形的宽度和高度, 单位为像素. 第二次点击只有出现在这个矩形内才会被系统认为这两次点击为双击. (两次点击还必须发生在指定的时间内.)
68, 69 | SM_CXDRAG, SM_CYDRAG: 以拖动点为中心, 在拖动操作开始前允许鼠标指针在其中进行有限的移动的矩形的宽度和高度. 这些值的单位为像素. 这允许用户方便地点击和释放鼠标按钮而不会意外开始拖动操作.
45, 46 | SM_CXEDGE, SM_CYEDGE: 3D 边框的尺寸, 单位为像素. 它们是 SM_CXBORDER 和 SM_CYBORDER 的 3D 副本.
7, 8 | SM_CXFIXEDFRAME, SM_CYFIXEDFRAME(与 SM_CXDLGFRAME, SM_CYDLGFRAME 含义相同): 含标题栏而不可调整大小的窗口的边框厚度, 单位为像素. SM_CXFIXEDFRAME 为水平边界的高度, 而 SM_CYFIXEDFRAME 为垂直边界的宽度.
83, 84 | SM_CXFOCUSBORDER, SM_CYFOCUSBORDER: 控件的焦点矩形的左右边缘的宽度和上下边缘的高度, 单位为像素. Windows 2000: 获取的值总是 0.
21, 3 | SM_CXHSCROLL, SM_CYHSCROLL: 水平滚动条上箭头位图的宽度, 单位为像素; 垂直滚动条的高度, 单位为像素.
10 | SM_CXHTHUMB: 水平滚动条中滚动块的宽度, 单位为像素.
11, 12 | SM_CXICON, SM_CYICON: 图标的默认宽度和高度, 单位为像素.
38, 39 | SM_CXICONSPACING, SM_CYICONSPACING: 大图标视图中项目网格单元格的尺寸, 单位为像素. 排列时每个项目会对齐到这个大小的矩形中. 这两个值总是大于或等于 SM_CXICON 和 SM_CYICON.
71, 72 | SM_CXMENUCHECK, SM_CYMENUCHECK: 默认菜单复选标记位图的尺寸, 单位为像素.
54, 55 | SM_CXMENUSIZE, SM_CYMENUSIZE: 菜单栏按钮的尺寸, 例如多文档界面中使用的子窗口的关闭按钮, 单位为像素.
47, 48 | SM_CXMINSPACING SM_CYMINSPACING: 已最小化窗口的网格单元格的尺寸, 单位为像素. 排列时每个已最小化的窗口会对齐到这个大小的矩形中. 这两个值总是大于或等于 SM_CXMINIMIZED 和 SM_CYMINIMIZED.
30, 31 | SM_CXSIZE, SM_CYSIZE: 窗口标题栏按钮的宽度和高度, 单位为像素.
32, 33 | SM_CXSIZEFRAME, SM_CYSIZEFRAME: 可调整大小窗口周围可调整边框的厚度, 单位为像素. SM_CXSIZEFRAME 为水平边框的宽度, 而 SM_CYSIZEFRAME 为垂直边框的高度. 与 SM_CXFRAME 和 SM_CYFRAME 含义相同.
49, 50 | SM_CXSMICON, SM_CYSMICON: 小图标的推荐尺寸, 单位为像素. 小图标一般出现在窗口标题和小图标视图中.
52, 53 | SM_CXSMSIZE SM_CYSMSIZE: 小标题栏按钮的尺寸, 单位为像素.
2, 20 | SM_CXVSCROLL, SM_CYVSCROLL: 垂直滚动条的宽度, 单位为像素; 垂直滚动条上箭头位图的高度, 单位为像素.
4 | SM_CYCAPTION: 标题区域的高度, 单位为像素.
18 | SM_CYKANJIWINDOW: 对于双字节字符集版本的系统, 这是在屏幕底部的 Kanji 窗口的高度, 单位为像素.
15 | SM_CYMENU: 单行菜单栏的高度, 单位为像素.
51 | SM_CYSMCAPTION: 小标题栏的高度, 单位为像素.
9 | SM_CYVTHUMB: 垂直滚动条滚动块的高度, 单位为像素.
42 | SM_DBCSENABLED: 当 User32.dll 支持 DBCS 时为非零值; 否则为零.
22 | SM_DEBUG: 如果安装了调试版本的 User.exe 则为非零值; 否则为零.
82 | SM_IMMENABLED: 如果启用了输入法管理器/输入法编辑器则为非零值; 否则为零. SM_IMMENABLED 表示系统是否准备在 Unicode 程序中使用基于 Unicode 的输入法. 要确保语言依赖的输入法可用, 请检查 SM_DBCSENABLED 和系统 ANSI 代码页. 否则 ANSI 到 Unicode 的转换可能无法正确执行, 或者不存在某些组件, 例如字体或注册表设置.
40 | SM_MENUDROPALIGNMENT: 如果下拉菜单与相应的菜单项右对齐时为非零值; 而左对齐时为零.
74 | SM_MIDEASTENABLED: 如果系统启用了希伯来和阿拉伯语言则为非零值, 如果没有则为零.
41 | SM_PENWINDOWS: 如果安装了 Microsoft Windows for Pen computing 扩展则为非零值; 否则为零.
44 | SM_SECURE: 如果存在安全支持则为非零值; 否则为零.
81 | SM_SAMEDISPLAYFORMAT: 如果所有的监视器使用相同的颜色格式则为非零值, 否则为零. 请注意两个显示器中可以含有相同的位深度, 但是不同的颜色格式. 例如, 红, 绿和蓝像素可以使用不同的位数进行编码, 或者这些位可能位于像素颜色值的不同地方.

## 备注

SysGet 只是调用了 GetSystemMetrics 函数, 该函数可能支持比本文中描述的更多的系统属性.

## 相关

DllCall, Win 函数, 监视器函数

## 示例

检索鼠标按钮的数量, 并将其存储在 MouseButtonCount.

    MouseButtonCount := SysGet(43)

读取虚拟屏幕的宽度和高度, 并将其存储在 VirtualScreenWidth 和 VirtualScreenHeight 中.

    VirtualScreenWidth := SysGet(78)
    VirtualScreenHeight := SysGet(79)

dftg