vb编程api函数--驱动器类- 零度雪的日志- 网易博客

vb编程api函数--驱动器类

2010-05-19 17:03:12 阅读6 评论0 字号:

-----------------------------------------
判断指定驱动器的类型:GetDriveTypeA函数
该函数能依据根目录识别1个驱动器是软驱或光驱或硬盘等。声明:
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
参数nDrive:驱动器根目录路径的字符串,如"C : \".
函数返回值为1个常数,指定驱动器类型:DRIVE_ REMOVABLE=2,软驱;
如果驱动器不能识别,则返回0,如指定目录不 DRIVE_ FIXED=3,硬盘。
存在,则返回1。 DRIVE _REMOTE=4,网络驱动器;
DRIVE _CDROM=5,光驱;
DRIVE_ RAMDISK=6虚拟磁盘 
调用如:
Private Const DRIVE_CDROM = 5
If GetDriveTypeA("f:\") = DRIVE_CDROM Then MsgBox "这是光驱"
---------------------------------------------------
获得指定驱动器的空间大小:GetDiskFreeSpaceA函数
该函数可获取指定驱动器的簇数和剩余簇数,每簇扇区数,每扇区字节数。声明:
Declare Function GetDiskFreeSpaceA Lib "kernel32" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long 
参数 类型及说明
lpRootPathName String,不包括卷名的一个磁盘根路径
lpSectorsPerCluster Long,装载每簇内有多少扇区数的变量
lpBytesPerSector Long,装载每个扇区内有多少字节数的变量
lpNumberOfFreeClusters Long,装载磁盘上剩余簇数的变量
lpTtoalNumberOfClusters Long,装载磁盘上总簇数的变量
调用如:
Dim lxn As String
lxn = "c:\"
Dim a&, b&, c&, d&
GetDiskFreeSpaceA lxn, a&, b&, c&, d&
m& = a& * b& * d&
MsgBox "本驱动器共有字节数:" & m&
n& = a& * b& * c&
MsgBox "本驱动器剩余字节数:" & n&
--------------------------------------------
获得指定驱动器的文件系统类型,卷标和序列号:GetVolumeInformationA函数
声明:
Declare Function GetVolumeInformationA Lib "kernel32" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
参数 类型及说明
lpRootPathName String,指定驱动器的根路径
lpVolumeNameBuffer String,装载卷标的一个字串(缓冲区)
nVolumeNameSize Long,lpVolumeNameBuffer字串的长度
lpVolumeSerialNumber Long,装载磁盘序列号的变量
lpMaximumComponentLength Long,指定一个变量,装载文件名每一部分的长度。例如,在"c:\component1\component2.ext"的情况下,它就代表component1或component2名称的长度
lpFileSystemFlags Long,装载一个或多个二进制位标志的变量。这些标志如下:●FS_CASE_IS_PRESERVED:文件名的大小写记录于文件系统;●FS_CASE_SENSITIVE:文件名要区分大小写 ●FS_UNICODE_STORED_ON_DISK:文件名保存为Unicode格式 ●FS_PERSISTANT_ACLS:文件系统支持文件的访问控制列表(ACL)安全机制●FS_FILE_COMPRESSION:文件系统支持逐文件的进行文件压缩 ●FS_VOL_IS_COMPRESSED:整个磁盘都是压缩的
lpFileSystemNameBuffer String,指定一个缓冲区,用于装载文件系统的类型名称(如FAT,NTFS以及其他)
nFileSystemNameSize Long,lpFileSystemNameBuffer字串的长度
有8个参数:第1个指明驱动器,第2,3个指明卷标字符串缓冲区及其长度,第4个返回磁盘序列号,第7,8个指明文件系统类型字符串缓冲区及其长度。调用如:
Private Sub Command2_Click()
Dim sType As String
Dim sLabel As String
sType = Space(20): sLabel = Space(20)
Dim lxn As Long
GetVolumeInformationA "c:\", sLabel, 20, lxn, 0, 0, sType, 20
MsgBox "该驱动器卷标为" & sLabel
MsgBox "该驱动器文件系统类型为" & sType
MsgBox "该驱动器序列号为" & Str(lxn)
End Sub
---------------------------------------------
查找本机上都有哪些驱动器:GetLogicalDriveStringsA函数
该函数的第2个参数返回包含本机全部驱动器根路径的字符串组合,从中分离即可得到每个驱动器,第1个参数指定第2个参数的缓冲区长度。
声明:
Declare Function GetLogicalDriveStringsA Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
参数:
nBufferLength Long,lpBuffer字串的长度
LpBuffer String,用于装载可用驱动器名称的字串。每个名字都用一个ASC码值为0的字符(NULL)分隔,在{zh1}一个名字后面连同其本身规律的那个\0,就有了两个ASCII 0终止。
函数返回值为写入字符串缓冲区的实际长度。
调用如:
Private Sub Command3_Click()
Dim lxn As String
lxn = String(255, " ")
m% = GetLogicalDriveStrings(255, lxn)
lxn = Left(lxn, m%)
For x = 1 To m% '由于ASC码值0会使其后的字符不显示,所以要改为空格32。
a = Asc(Mid(lxn, x, 1))
If a = 0 Then a = 32 
Letts= Letts & Chr(a) 'Letts{zh1}返回值例如"a:\ c:\ d:\ e:\ f:\ "
Next x
Msgbox "本机全部驱动器:" & Letts
End Sub
----------------------------------------------
格式化驱动器:SHFormatDrive函数
Public Declare Function SHFormatDrive Lib "shell32.dll" (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
{dy}个参数传入的是本程序句柄,第二个参数指定驱动器,0为软驱;第三个参数?第四个参数?。


"; $('miniAd').show(); } }, onFailure: function(){} }}); } showMiniAd();
<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--相关文章 2010.04.29="" by="" yangfan--=""> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【vb编程api函数--驱动器类- 零度雪的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——