📄 040107.htm
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title>
<style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="98%">
<tr>
<td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">API函数</a></td>
</tr>
<tr>
<td width="100%">
<p align="center">系统类函数</td>
</tr>
<tr>
<td width="100%"><br>
检测是否安装了声卡:auxGetNumDevs函数<br>
声明:<br>
Public Declare Function auxGetNumDevs Lib "winmm.dll" () As Long<br>
如果安装了声卡,则函数返回值为零,否则为非0。调用如:<br>
Dim i As Integer<br>
i = auxGetNumDevs()<br>
If i = 0 Then<br>
MsgBox "本机安装有声卡"<br>
Else<br>
MsgBox "本机无声卡"<br>
End If ??????<br>
==========================================================<br>
获得WINDOWS已经运行的时间:GetTickCount函数。<br>
此函数以毫秒为单位,返回系统已运行了多长时间,声明:<br>
Private Declare Function GetTickCount& Lib "kernel32" ()<br>
很简单,调用如:m=GetTickCount.返回数值很大,如2550550毫秒。 <br>
==================================<br>
获取与windows环境有关的系统信息:GetSystemMetrics函数<br>
此函数获取各种系统尺寸,如窗口的边框大小,指针大小,屏幕大小,标准图标大小,菜单栏上按纽大小等,还有是否安装了鼠标及鼠标按纽数量等。<br>
声明:<br>
Declare Function GetSystemMetrics Lib "user32"(ByVal nIndex As Long) As Long<br>
调用如:<br>
Const SM_CXSCREEN = 0 屏幕宽度<br>
Const SM_CYSCREEN = 1 屏幕高度 <br>
x = GetSystemMetrics(SM_CXSCREEN)<br>
y = GetSystemMetrics(SM_CYSCREEN)<br>
Print x, y<br>
只有1个参数:nIndex--指明要获取哪方面信息。如指定为下面的常数:<br>
SM_CLEANBOOT 指定启动模式。0=普通模式;1=带网络支持的安全模式 <br>
SM_CMETRICS 可用系统环境的数量 <br>
SM_CMOUSEBUTTON 鼠标按钮(按键)的数量。如没有鼠标,就为零 <br>
SM_CXBORDER, SM_CYBORDER 尺寸不可变边框的大小 <br>
SM_CXCURSOR, SM_CYCURSOR 标准指针大小 <br>
SM_CXDLGFRAME, SM_CYDLGFRAME 对话框边框的大小 <br>
SM_CXDOUBLECLK, SM_CYDOUBLECLK 双击区域的大小(参考注解) <br>
SM_CXFRAME, SM_CYFRAME 尺寸可变边框的大小(在win95和nt 4.0中使用SM_C?FIXEDFRAME) <br>
SM_CXFULLSCREEN, SM_CYFULLSCREEN 最大化窗口客户区的大小 <br>
SM_CXHSCROLL, SM_CYHSCROLL 水平滚动条上的箭头大小 <br>
SM_CXHTHUMB, SM_CYHTHUMB 滚动块在水平滚动条上的大小 <br>
SM_CXICON, SM_CYICON 标准图标的大小 <br>
SM_CXICONSPACING, SM_CYICONSPACING 桌面图标之间的间隔距离。在win95和nt 4.0中是指大图标的间距 <br>
SM_CXMAXIMIZED, SM_CYMAXIMIZED 最大化窗口的默认尺寸 <br>
SM_CXMAXTRACK, SM_CYMAXTRACK 改变窗口大小时,最大的轨迹宽度 <br>
SM_CXMENUCHECK, SM_CYMENUCHECK 菜单复选号位图的大小 <br>
SM_CXMENUSIZE, SM_CYMENUSIZE 菜单栏上的按钮大小 <br>
SM_CXMIN, SM_CYMIN 窗口的最小尺寸 <br>
SM_CXMINIMIZED, SM_CYMINIMIZED 最小化的窗口必须填充进去的一个矩形小于或等于SM_C?ICONSPACING <br>
SM_CXMINTRACK, SM_CYMINTRACK 窗口的最小轨迹宽度 <br>
SM_CXSCREEN, SM_CYSCREEN 屏幕大小 <br>
SM_CXSIZE, SM_CYSIZE 标题栏位图的大小 <br>
SM_CXSIZEFRAME, SM_CYSIZEFRAME 具有WS_THICKFRAME样式的窗口的大小 <br>
SM_CXSMICON, SM_CYSMICON 小图标的大小 <br>
SM_CXSMSIZE, SM_CYSMSIZE 小标题按钮的大小 <br>
SM_CXVSCROLL, SM_CYVSCROLL 垂直滚动条中的箭头按钮的大小 <br>
SM_CYCAPTION 窗口标题的高度 <br>
SM_CYKANJIWINDOW Kanji窗口的大小(Height of Kanji window) <br>
SM_CYMENU 菜单高度 <br>
SM_CYSMCAPTION 小标题的高度 <br>
SM_CYVTHUMB 垂直滚动条上滚动块的高度 <br>
SM_DBCSENABLED 如支持双字节则为TRUE <br>
SM_MENUDROPALIGNMENT 如弹出式菜单对齐菜单栏项目的左侧,则为零 <br>
SM_MOUSEPRESENT 如安装了鼠标则为TRUE <br>
SM_NETWORK 如安装了网络,则设置位0。其他位保留未用 <br>
SM_PENWINDOWS 如装载了支持笔窗口的DLL,则表示笔窗口的句柄 <br>
SM_SECURE 如安装了安全(保密)机制,则为TRUE <br>
SM_SHOWSOUNDS 强制视觉提示播放声音 <br>
SM_SLOWMACHINE 系统速度太慢,但仍在运行中 <br>
注解 <br>
双击区域指定屏幕上一个特定的显示区域,只有在这个区域内连续进行两次鼠标单击,才有可能被当作双击事件处理 <br>
------------------------------------------------<br>
读取或设置Windows各项系统参数:SystemParametersInfoA函数<br>
声明:<br>
Declare Function SystemParametersInfoA Lib "user32"(ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)As long<br>
调用如:<br>
禁止(或允许)Ctrl+Alt+Del和Alt+Tab键:<br>
Dim pOld as Boolean<br>
x=SystemParametersInfoA(97,True(或False),pOld,0)<br>
其中的参数如下:<br>
uAction Long,指定要设置的系统参数。是1个SPI_GET…(读取)或SPI_SET…(设置)常数,指定要读取或设置哪方面的内容。参考uAction常数表 (见附1)。<br>
uParam Long,与lpvParam参数有关,如可以是指定的lpvParam设置的值,或是指定lpvParam字符串缓冲区的长度等。参考uAction常数表 。<br>
lpvParam Any,要读取或设置的参数的结构。是引用传递的Integer、Long,String或结构类型数据,具体用法参考uAction常数表 .注意,该参数必须定义成正确的数据类型 如上面例中要把pOld先定义为Boolean类型。<br>
fuWinIni Long,0或&H1或&H2。这个函数设置的用户配置参数保存在win.ini或注册表里,或同时保存在这两个地方。这个参数规定了在修改和设置系统参数的时候,是否立即更新用户所作的设置(修改win.ini或注册表)。为零禁止修改,为: <br>
SPIF_UPDATEINIFILE(值为&H1):更新win.ini和(或)注册表中的用户配置文件 <br>
SPIF_SENDWININICHANGE(值为&H2): 倘若也设置了SPIF_UPDATEINIFILE,则将一条WM_WININICHANGE消息发给所有应用程序。这条消息告诉应用程序已经改变了用户配置设置。注:在调用这个函数之前,特别要注意将lpvParam参数定义成正确的数据类型 <br>
注:将SystemParametersInfo的第四个参数fuWinIni设置为0或&H2,函数都会通知其它窗口变化,但也都不会更改注册表。只要重新启动计算机,系统的变化就会被取消。<br>
--------------------------------------------<br>
弹出"关机"对话框:#60函数<br>
这个函数就象在"开始"菜单中选择"关闭系统"项一样,会弹出一个关机对话框,询问是关机,重启还是休眠。如果在WIN98上这个函数没多大用,要关机不如直接调用ExitWindows函数或直接Shell "Rundll32.exe User.exe,ExitWindows",而在WIN2000中,好象上述办法不行了,我就用了这个函数来调出关机对话框,然后用keybd_event过程模拟击键来操作关机。声明:<br>
Public Declare Function ExitDialog Lib "shell32" Alias "#60" (ByVal lType As Long) As Long 注意:由于#号不能出现在VB函数名称的开头,因此要用Alias把它作为别名列开,调用如:ExitDialog 1便可,参数lType指定是关机,重启还是休眠(好象对Win2000无效),值取0-8中的一整数。以下是一个Win2000休眠的例子:<br>
Private Sub Form_Load()<br>
Timer1.Enabled = True<br>
ExitDialog 1<br>
End Sub
<p>Private Sub Timer1_Timer()<br>
Static m As Integer<br>
m = m + 1<br>
For a = 1 To 4<br>
keybd_event 40, 0, 0, 0 按四次向下方向键,确保选中"休眠"选项。<br>
keybd_event 40, 0, 2, 0<br>
Next a<br>
keybd_event 13, 0, 0, 0 按下回车。确定。<br>
keybd_event 13, 0, 2, 0<br>
If m = 7 Then Unload Me 连续操作七遍。以防关机速度缓慢。<br>
End Sub</p>
<p align="center">
<br>
< <a href="040106.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="040108.htm">下一页</a>
><br>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -