vb常用函数 下载本文

Letts= Letts & Chr(a) 'Letts最后返回值例如\

Next x

Msgbox \本机全部驱动器:\

End Sub

----------------------------------------------

格式化驱动器:SHFormatDrive函数

Public Declare Function SHFormatDrive Lib \(ByVal hWnd As Long, ByVal Drive

As Long, fmtID As Long, Options As Long) As Long

调用如(格式化软盘):

Private Const SHFMT_ID_DEFAULT = &HFFFF&

Private Sub Command1_Click()

Dim lret As Long

lret = SHFormatDrive(Me.hWnd, 0, SHFMT_ID_DEFAULT, 0)

Select Case lret

Case -2

MsgBox \格式化完成。\

Case -3

MsgBox \不能格式化只读盘。\

End Select End Sub

第一个参数传入的是本程序句柄,第二个参数指定驱动器,0为软驱;第三个参数?第四个参

数?。系统类函数

============================

检测是否安装了声卡:auxGetNumDevs函数 声明:

Public Declare Function auxGetNumDevs Lib \如果安装了声卡,则函数返回值为零,否则为非0。调用如: Dim i As Integer i = auxGetNumDevs() If i = 0 Then

MsgBox \本机安装有声卡\Else

MsgBox \本机无声卡\End If ??????

========================================================== 获得WINDOWS已经运行的时间:GetTickCount函数。 此函数以毫秒为单位,返回系统已运行了多长时间,声明: Private Declare Function GetTickCount& Lib \很简单,调用如:m=GetTickCount.返回数值很大,如2550550毫秒。 ==================================

获取与windows环境有关的系统信息:GetSystemMetrics函数

此函数获取各种系统尺寸,如窗口的边框大小,指针大小,屏幕大小,标准图标大小,菜单栏上

按纽大小等,还有是否安装了鼠标及鼠标按纽数量等。 声明:

Declare Function GetSystemMetrics Lib \调用如:

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 %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 \,而在WIN2000中,好象上述办法不行了,我就用了这个函数来调出关机对话框,然后用keybd_event过程模拟击键来操作关机。声明: Public Declare Function ExitDialog Lib \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

操作注册表函数

打开1个任意的注册表主键,并获得其句柄:RegOpenKeyA函数,声明:

Declare Function RegOpenKeyA Lib \As Long, ByVal lpSubKey As String, phkResult As Long) As Long

除了七个根目录下的基本主键外,操作其他的下级主键,都要先用此函数打开。并将句柄传到其他函数以操作该键。 参数:

hKey Long,指定一个基本主键(那七个主键箱之一)。

lpSubKey String,要打开的主键名 ,是hKey指定主键的下级主键,

phkResult Long,指定一个变量,用于装载本函数打开的主键的句柄,我们主要利用这个参数的返回值。以进行下一步的操作,例:

Public Const HKEY_LOCAL_MACHINE = &H80000002 Dim hKey As Long Dim lpSubKey As String Dim phkResult As Long

lpSubKey = \lxn = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, phkResult)

函数返回值为零表示成功,如上若lxn为0则表示函数顺利执行,并用phkResult返回打开的主键句柄。我们下面就要用这个值。

读取指定主键下的1个项的值:RegQueryValueExA函数。声明:

Declare Function RegQueryValueExA Lib \lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long 参数:

hKey Long,一个已打开下级主键句柄(用前面RegOpenKey函数打开的主键,采用其phkResult