VB 版 (精华区)
发信人: bloom (小石头长大了), 信区: VB
标 题: 硬件与系统函数(4)
发信站: 哈工大紫丁香 (2000年07月23日14:35:20 星期天), 转信
目录
GetSystemInfo 取得与底层硬件平台有关的信息
GetSystemMetrics 返回与windows环境有关的信息
GetSystemPowerStatus 获得与当前系统电源状态有关的信息
GetSystemTime 取得当前系统时间,这个时间采用的是“协同世界时间”(即UTC,也叫
做GMT)格式
GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步
GetThreadLocale 取得当前线程的地方ID
GetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)
GetTimeFormat 针对当前指定的“地方”,按特定的格式格式化一个系统时间
GetTimeZoneInformation 取得与系统时区设置有关的信息
GetUserDefaultLangID 为当前用户取得默认语言ID
GetUserDefaultLCID 取得当前用户的默认“地方”设置
GetUserName 取得当前用户的名字
GetVersion 判断当前运行的Windows和DOS版本
GetVersionEx 取得与平台和操作系统有关的版本信息
HideCaret 在指定的窗口隐藏插入符(光标)
IsValidCodePage 判断一个代码页是否有效
__________________________________________________________________
GetSystemInfo
VB声明
Declare Sub GetSystemInfo Lib "kernel32" Alias "GetSystemInfo" (lpSystemInfo
As SYSTEM_INFO)
说明
在一个SYSTEM_INFO结构中载入与底层硬件平台有关的信息
参数表
参数 类型及说明
lpSystemInfo SYSTEM_INFO,指定一个结构,用于装载适当的系统信息
____________________________________________________
GetSystemMetrics
VB声明
Declare Function GetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByV
al nIndex As Long) As Long
说明
返回与windows环境有关的信息
返回值
Long,取决于具体的常数索引
参数表
参数 类型及说明
nIndex Long,常数,指定欲获取的信息;如下表所示
nIndex常数设置
常数定义 取得信息
SM_ARRANGE 设置windows如何排列最小化窗口的一个标志。参考api32.txt中的ARW常数
SM_CLEANBOOT 指定启动模式。0=普通模式;1=带网络支持的安全模式
SM_CMETRICS 可用系统环境的数量
SM_CMOUSEBUTTON 鼠标按钮(按键)的数量。如没有鼠标,就为零
SM_CXBORDER, SM_CYBORDER 尺寸不可变边框的大小
SM_CXCURSOR, SM_CYCURSOR 标准指针大小
SM_CXDLGFRAME, SM_CYDLGFRAME 对话框边框的大小
SM_CXDOUBLECLK, SM_CYDOUBLECLK 双击区域的大小(参考注解)
SM_CXFRAME, SM_CYFRAME 尺寸可变边框的大小(在win95和nt 4.0中使用SM_C?FIXEDFR
AME)
SM_CXFULLSCREEN, SM_CYFULLSCREEN 最大化窗口客户区的大小
SM_CXHSCROLL, SM_CYHSCROLL 水平滚动条上的箭头大小
SM_CXHTHUMB, SM_CYHTHUMB 滚动块在水平滚动条上的大小
SM_CXICON, SM_CYICON 标准图标的大小
SM_CXICONSPACING, SM_CYICONSPACING 桌面图标之间的间隔距离。在win95和nt 4.0中
是指大图标的间距
SM_CXMAXIMIZED, SM_CYMAXIMIZED 最大化窗口的默认尺寸
SM_CXMAXTRACK, SM_CYMAXTRACK 改变窗口大小时,最大的轨迹宽度
SM_CXMENUCHECK, SM_CYMENUCHECK 菜单复选号位图的大小
SM_CXMENUSIZE, SM_CYMENUSIZE 菜单栏上的按钮大小
SM_CXMIN, SM_CYMIN 窗口的最小尺寸
SM_CXMINIMIZED, SM_CYMINIMIZED 最小化的窗口必须填充进去的一个矩形小于或等于S
M_C?ICONSPACING
SM_CXMINTRACK, SM_CYMINTRACK 窗口的最小轨迹宽度
SM_CXSCREEN, SM_CYSCREEN 屏幕大小
SM_CXSIZE, SM_CYSIZE 标题栏位图的大小
SM_CXSIZEFRAME, SM_CYSIZEFRAME 具有WS_THICKFRAME样式的窗口的大小
SM_CXSMICON, SM_CYSMICON 小图标的大小
SM_CXSMSIZE, SM_CYSMSIZE 小标题按钮的大小
SM_CXVSCROLL, SM_CYVSCROLL 垂直滚动条中的箭头按钮的大小
SM_CYCAPTION 窗口标题的高度
SM_CYKANJIWINDOW Kanji窗口的大小(Height of Kanji window)
SM_CYMENU 菜单高度
SM_CYSMCAPTION 小标题的高度
SM_CYVTHUMB 垂直滚动条上滚动块的高度
SM_DBCSENABLED 如支持双字节则为TRUE
SM_DEBUG 如windows的调试版正在运行,则为TRUE
SM_MENUDROPALIGNMENT 如弹出式菜单对齐菜单栏项目的左侧,则为零
SM_MIDEASTENABLED 允许了希伯来和阿拉伯语
SM_MOUSEPRESENT 如安装了鼠标则为TRUE
SM_MOUSEWHEELPRESENT 如安装了带轮鼠标则为TRUE;只适用于nt 4.0
SM_NETWORK 如安装了网络,则设置位0。其他位保留未用
SM_PENWINDOWS 如装载了支持笔窗口的DLL,则表示笔窗口的句柄
SM_SECURE 如安装了安全(保密)机制,则为TRUE
SM_SHOWSOUNDS 强制视觉提示播放声音
SM_SLOWMACHINE 系统速度太慢,但仍在运行中(System is too slow for effective
use but is being run anyway)
SM_SWAPBUTTON 如左右鼠标键已经交换,则为TRUE
注解
双击区域指定屏幕上一个特定的显示区域,只有在这个区域内连续进行两次鼠标单击,
才有可能被当作双击事件处理
其他
常数 SM_ARRANGE, SM_CLEANBOOT, SM_CMETRICS, SM_C?MAXIMIZED, SM_C?MAXTRACK, S
M_C?SIZEFRAME, SM_C?SMICON, SM_C?SMSIZE, SM_CYSMCAPTION, SM_SECURE, SM_SHOWS
OUNDS, and SM_SLOWMACHINE 未获 NT 3.51 及更早版本的支持
_____________________________________________________________________________
GetSystemPowerStatus
VB声明
Declare Function GetSystemPowerStatus Lib "kernel32" Alias "GetSystemPowerSt
atus" (lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
说明
获得与当前系统电源状态有关的信息。对便携式计算机来说,这些信息特别有用。在那
些地方,可用这个函数了解有关电源和电池组的情况
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
lpSystemPowerStatus SYSTEM_POWER_STATUS,用于装载电源状态信息的结构
注解
结果的准确度取决于系统实际的电源管理能力
_____________________________________________________
GetSystemTime
VB声明
Declare Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime
As SYSTEMTIME)
说明
在一个SYSTEMTIME中载入当前系统时间,这个时间采用的是“协同世界时间”(即UTC,
也叫做GMT)格式
参数表
参数 类型及说明
lpSystemTime SYSTEMTIME,随同当前时间载入的结构
___________________________________________
GetSystemTimeAdjustment
VB声明
Declare Function GetSystemTimeAdjustment Lib "kernel32" Alias "GetSystemTime
Adjustment" (lpTimeAdjustment As Long, lpTimeIncrement As Long, lpTimeAdjust
mentDisabled As Boolean) As Long
说明
Win32可使内部系统时钟与一个外部的时钟信号源同步,方法是定时添加一个校准值。这
个函数指定的所有时间都以100ns(0.1ms)为单位递增
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
lpTimeAdjustment Long,添加到内部系统时钟的时间量
lpTimeIncrement Long,校准间隔时间。等于中断时钟时间
lpTimeAdjustmentDisabled Boolean,如时间调校功能关闭,则为TRUE
示例
Dim lpTimeAdjustment&, lpTimeIncrement&, lpTimeAdjustmentDisabled&
GetSystemTimeAdjustment lpTimeAdjustment, lpTimeIncrement, lpTimeAdjustmentD
isabled
Print "Time adjustment: " & lpTimeAdjustment & "Increment: " & lpTimeIncreme
nt & "Adjustment Disabled: " & lpTimeAdjustmentDisabled
_________________________________________________________
GetThreadLocale
VB声明
Declare Function GetThreadLocale Lib "KERNEL32" Alias "GetThreadLocale" () A
s Long
说明
取得当前线程的地方ID
返回值
Long,地方标识符
注解
在vb下,除非从一个多线程EXE服务器调用,否则当前线程就是当前应用程序
_____________________________________
GetTickCount
VB声明
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
说明
用于获取自windows启动以来经历的时间长度(毫秒)
返回值
Long,以毫秒为单位的windows运行时间
__________________________________________________________
GetTimeFormat
VB声明
Declare Function GetTimeFormat Lib "kernel32" Alias "GetTimeFormatA" (ByVal
Locale As Long, ByVal dwFlags As Long, lpTime As SYSTEMTIME, ByVal lpFormat
As String, ByVal lpTimeStr As String, ByVal cchTime As Long) As Long
说明
针对当前指定的“地方”,按特定的格式格式化一个系统时间
返回值
Long,格式化过后的字串的长度。零表示出错。会将GetLastError设置为下述值之一:
ERROR_INSUFFICIENT_BUFFER,ERROR_INVALID_FLAGS,ERROR_INVALID_PARAMETER
参数表
参数 类型及说明
Locale Long,决定了具体格式的地方ID。lpFormat参数中指定的任何信息(倘若不是N
ULL)都要优先于各地方不同的特别信息
dwFlags Long,如指定了lpFormat,那么该参数应该为零。否则,可设为LOCALE_NOUSE
ROVERRIDE,表示强制使用系统地方参数——即使它们已由用户更改。用DATE_SHORTDAT
E或DATE_LONGDATE选择不同的日期格式
lpTime SYSTEMTIME,用于包容系统时间的一个结构
lpFormat String,可设为NULL,使用特定于不同地方的值(用vbNullString传递一个N
ULL)。否则包含一个时间格式字串。对h,hh,hhh,hhhh,m,mm,s,ss这样的代码来说,它
们的用法与在vb格式命令中的用法是相同的。t和tt用于指定一个时间段标志(A或AM,
P或PM)
lpTimeStr String,指定一个缓冲区,用于容纳格式化过后的字串。注意事先对字串的
长度进行正确的预初始化
cchTime Long,lpTimeStr缓冲区的长度。如为零,表示函数会返回需要缓冲区的大小
注解
对于dwFlags参数的解释可能翻译有错误。原文为:
If lpFormat is specified, this should be zero. Otherwise, may be set to LOCA
LE_NOUSEROVERRIDE to force the system locale parameters to be used even if t
hey have been overridden by the user. Use the self-explanatory constants TIM
E_NOMINUITESORSECONDS, TIME_NOSECONDS, or TIME_FORCE24HOURFORMAT to choose b
etween date formats. Constant TIME_NOMARKER removes the AM or PM marker.
________________________________________________________________
GetTimeZoneInformation
VB声明
Declare Function GetTimeZoneInformation Lib "kernel32" Alias "GetTimeZoneInf
ormation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
说明
在一个TIME_ZONE_INFORMATION结构中载入与系统时区设置有关的信息
返回值
Long,下述常数之一:
TIME_ZONE_ID_INVALID 函数执行失败,会设置GetLastError
TIME_ZONE_ID_UNKNOWN 时区未知(可能仍然指定了bias值)
TIME_ZONE_ID_STANDARD 标准时间有效
TIME_ZONE_ID_DAYLIGHT 夏令时有效
参数表
参数 类型及说明
lpTimeZoneInformation TIME_ZONE_INFORMATION,用于载入时区信息的结构
注解
在lpTimeZoneInformation结构中为本地时间添加bias信息,从而获得系统时间。TIME_
ZONE_INFORMATION结构内部的DaylightName和StandardName字串肯定采用Unicode格式
_____________________________________________________________
GetUserDefaultLangID
VB声明
Declare Function GetUserDefaultLangID Lib "kernel32" Alias "GetUserDefaultLa
ngID" () As Integer
说明
为当前用户取得默认语言ID
返回值
Long,当前用户的语言ID
_______________________________________
GetUserDefaultLCID
VB声明
Declare Function GetUserDefaultLCID Lib "kernel32" Alias "GetUserDefaultLCID
" () As Long
说明
取得当前用户的默认“地方”设置
返回值
Long,针对当前用户的默认地方ID
_____________________________________________
GetUserName
VB声明
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal
lpBuffer As String, nSize As Long) As Long
说明
取得当前用户的名字
返回值
Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError
参数表
参数 类型及说明
lpBuffer String,一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳
用户名
nSize Long,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量
示例
Dim s$, cnt&, dl&
cnt& = 199
s$ = String$(200,0)
dl& = GetUserName(s$, cnt)
Debug.Print Left$(s$, cnt); cnt
_______________________________________________________________________
GetVersion
VB声明
Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long
说明
判断当前运行的Windows和DOS版本
返回值
Long,低16位包含了windows版本;低字节包含了主版本号(3代表windows 3.10,4代表
nt 4.0);高字节包含了两个数位的辅助版本号(10代表windows 3.10,95代表window
s 95)。高16位则包含了平台信息。针对windows NT,高位设为0;针对windows for w
orkgroups上运行的Win32s,则高位为1
注解
在win32下,最好换用GetVersionEx函数。在win32下,高字不会返回DOS版本
_________________________________________________________________________
GetVersionEx
VB声明
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByVal lp
VersionInformation As OSVERSIONINFO) As Long
说明
在一个OSVERSIONINFO结构中载入与平台和操作系统有关的版本信息
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
lpVersionInformation OSVERSIONINFO,用于装载版本信息的结构。在正式调用函数之
前,必须先将这个结构的dwOSVersionInfoSize字段设为结构的大小(148)
__________________________________________________________________
HideCaret
VB声明
Declare Function HideCaret Lib "user32" Alias "HideCaret" (ByVal hwnd As Lon
g) As Long
说明
在指定的窗口隐藏插入符(光标)
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,包含了插入符的窗口的句柄。可能是零;在这种情况下,只有包容了插入符
的那个窗口由活动任务拥有时,插入符才会被隐藏
注解
针对插入符的显示,windows维护着一个内部计数器;类似于ShowCursor函数使用的那个
。所以对HideCaret 和 ShowCaret的调用必须进行一番权衡
____________________________________________________________
IsValidCodePage
VB声明
Declare Function IsValidCodePage Lib "kernel32" Alias "IsValidCodePage" (ByV
al CodePage As Long) As Long
说明
判断一个代码页是否有效
返回值
Long,如代码页有效,就返回TRUE(非零);否则返回零
参数表
参数 类型及说明
CodePage Long,一个代码页的标识符。参考GetACP和GetOEMCP函数
又臭,又硬。
小石头
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.233.140]
--
※ 修改:·bloom 於 07月23日14:58:15 修改本文·[FROM: 202.118.233.140]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.933毫秒