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