系统类函数

转自:http://boynd.muicc.com/vb/API/xitong.htm

 

系统类函数


============================
检测是否安装了声卡:auxGetNumDevs函数
声明:
Public Declare Function auxGetNumDevs Lib "winmm.dll" () As Long
如果安装了声卡,则函数返回值为零,否则为非0。调用如:
Dim i As Integer
i = auxGetNumDevs()
If i = 0 Then
MsgBox "本机安装有声卡"
Else
MsgBox "本机无声卡"
End If ??????
==========================================================
获得WINDOWS已经运行的时间:GetTickCount函数。
此函数以毫秒为单位,返回系统已运行了多长时间,声明:
Private Declare Function GetTickCount& Lib "kernel32" ()
很简单,调用如:m=GetTickCount.返回数值很大,如2550550毫秒。 
==================================
获取与windows环境有关的系统信息:GetSystemMetrics函数
此函数获取各种系统尺寸,如窗口的边框大小,指针大小,屏幕大小,标准图标大小,菜单栏上按纽大小等,还有是否安装了鼠标及鼠标按纽数量等。
声明:
Declare Function GetSystemMetrics Lib "user32"(ByVal nIndex As Long) As Long
调用如:
Const SM_CXSCREEN = 0 屏幕宽度
Const SM_CYSCREEN = 1 屏幕高度 
x = GetSystemMetrics(SM_CXSCREEN)
y = GetSystemMetrics(SM_CYSCREEN)
Print x, y
只有1个参数:nIndex--指明要获取哪方面信息。如指定为下面的常数:
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?FIXEDFRAME) 
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 最小化的窗口必须填充进去的一个矩形小于或等于SM_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_MENUDROPALIGNMENT 如弹出式菜单对齐菜单栏项目的左侧,则为零 
SM_MOUSEPRESENT 如安装了鼠标则为TRUE 
SM_NETWORK 如安装了网络,则设置位0。其他位保留未用 
SM_PENWINDOWS 如装载了支持笔窗口的DLL,则表示笔窗口的句柄 
SM_SECURE 如安装了安全(保密)机制,则为TRUE 
SM_SHOWSOUNDS 强制视觉提示播放声音 
SM_SLOWMACHINE 系统速度太慢,但仍在运行中 
注解 
双击区域指定屏幕上一个特定的显示区域,只有在这个区域内连续进行两次鼠标单击,才有可能被当作双击事件处理 
------------------------------------------------
读取或设置Windows各项系统参数:SystemParametersInfoA函数
声明:
Declare Function SystemParametersInfoA Lib "user32"(ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)As long
调用如:
禁止(或允许)Ctrl+Alt+Del和Alt+Tab键:
Dim pOld as Boolean
x=SystemParametersInfoA(97,True(或False),pOld,0)
其中的参数如下:
uAction Long,指定要设置的系统参数。是1个SPI_GET…(读取)或SPI_SET…(设置)常数,指定要读取或设置哪方面的内容。参考uAction常 数表 (见附1)。
uParam Long,与lpvParam参数有关,如可以是指定的lpvParam设置的值,或是指定lpvParam字符串缓冲区的长度等。参考uAction常 数表 。
lpvParam Any,要读取或设置的参数的结构。是引用传递的Integer、Long,String或结构类型数据,具体用法参考uAction常数表 .注意,该参数必须定义成正确的数据类型 如上面例中要把pOld先定义为Boolean类型。
fuWinIni Long,0或&H1或&H2。这个函数设置的用户配置参数保存在win.ini或注册表里,或同时保存在这两个地方。这个参数规定了在 修改和设置系统参数的时候,是否立即更新用户所作的设置(修改win.ini或注册表)。为零禁止修改,为: 
SPIF_UPDATEINIFILE(值为&H1):更新win.ini和(或)注册表中的用户配置文件 
SPIF_SENDWININICHANGE(值为&H2): 倘若也设置了SPIF_UPDATEINIFILE,则将一条WM_WININICHANGE消息发给所有应用程序。这条消息告诉应用程序已经改变了用户 配置设置。注:在调用这个函数之前,特别要注意将lpvParam参数定义成正确的数据类型 
注:将SystemParametersInfo的第四个参数fuWinIni设置为0或&H2,函数都会通知其它窗口变化,但也都不会更改注册 表。只要重新启动计算机,系统的变化就会被取消。
--------------------------------------------
弹出"关机"对话框:#60函数
这个函数就象在"开始"菜单中选择"关闭系统"项一样,会弹出一个关机对话框,询问是关机,重启还是休眠。如果在WIN98上这个函数没多大用,要关机不 如直接调用ExitWindows函数或直接Shell "Rundll32.exe User.exe,ExitWindows",而在WIN2000中,好象上述办法不行了,我就用了这个函数来调出关机对话框,然后用 keybd_event过程模拟击键来操作关机。声明:
Public Declare Function ExitDialog Lib "shell32" Alias "#60" (ByVal lType As Long) As Long 注意:由于#号不能出现在VB函数名称的开头,因此要用Alias把它作为别名列开,调用如:ExitDialog 1便可,参数lType指定是关机,重启还是休眠(好象对Win2000无效),值取0-8中的一整数。以下是一个Win2000休眠的例子:
Private Sub Form_Load()
Timer1.Enabled = True
ExitDialog 1
End Sub

Private Sub Timer1_Timer()
Static m As Integer
m = m + 1
For a = 1 To 4
keybd_event 40, 0, 0, 0 按四次向下方向键,确保选中"休眠"选项。
keybd_event 40, 0, 2, 0
Next a
keybd_event 13, 0, 0, 0 按下回车。确定。
keybd_event 13, 0, 2, 0
If m = 7 Then Unload Me 连续操作七遍。以防关机速度缓慢。
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值