?? 040106.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>
判斷指定驅動器的類型:GetDriveTypeA函數<br>
該函數能依據根目錄識別1個驅動器是軟驅或光驅或硬盤等。聲明:<br>
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long<br>
參數nDrive:驅動器根目錄路徑的字符串,如"C : \".<br>
函數返回值為1個常數,指定驅動器類型:DRIVE_ REMOVABLE=2,軟驅;<br>
如果驅動器不能識別,則返回0,如指定目錄不 DRIVE_ FIXED=3,硬盤。<br>
存在,則返回1。 DRIVE _REMOTE=4,網絡驅動器;<br>
DRIVE _CDROM=5,光驅;<br>
DRIVE_ RAMDISK=6虛擬磁盤 <br>
調用如:<br>
Private Const DRIVE_CDROM = 5<br>
If GetDriveTypeA("f:\") = DRIVE_CDROM Then MsgBox "這是光驅"<br>
---------------------------------------------------<br>
獲得指定驅動器的空間大小:GetDiskFreeSpaceA函數<br>
該函數可獲取指定驅動器的簇數和剩余簇數,每簇扇區數,每扇區字節數。聲明:<br>
Declare Function GetDiskFreeSpaceA Lib "kernel32" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long <br>
參數 類型及說明<br>
lpRootPathName String,不包括卷名的一個磁盤根路徑<br>
lpSectorsPerCluster Long,裝載每簇內有多少扇區數的變量<br>
lpBytesPerSector Long,裝載每個扇區內有多少字節數的變量<br>
lpNumberOfFreeClusters Long,裝載磁盤上剩余簇數的變量<br>
lpTtoalNumberOfClusters Long,裝載磁盤上總簇數的變量<br>
調用如:<br>
Dim lxn As String<br>
lxn = "c:\"<br>
Dim a&, b&, c&, d&<br>
GetDiskFreeSpaceA lxn, a&, b&, c&, d&<br>
m& = a& * b& * d&<br>
MsgBox "本驅動器共有字節數:" & m&<br>
n& = a& * b& * c&<br>
MsgBox "本驅動器剩余字節數:" & n&<br>
--------------------------------------------<br>
獲得指定驅動器的文件系統類型,卷標和序列號:GetVolumeInformationA函數<br>
聲明:<br>
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<br>
參數 類型及說明<br>
lpRootPathName String,指定驅動器的根路徑<br>
lpVolumeNameBuffer String,裝載卷標的一個字串(緩沖區)<br>
nVolumeNameSize Long,lpVolumeNameBuffer字串的長度<br>
lpVolumeSerialNumber Long,裝載磁盤序列號的變量<br>
lpMaximumComponentLength Long,指定一個變量,裝載文件名每一部分的長度。例如,在"c:\component1\component2.ext"的情況下,它就代表component1或component2名稱的長度<br>
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:整個磁盤都是壓縮的<br>
lpFileSystemNameBuffer String,指定一個緩沖區,用于裝載文件系統的類型名稱(如FAT,NTFS以及其他)<br>
nFileSystemNameSize Long,lpFileSystemNameBuffer字串的長度<br>
有8個參數:第1個指明驅動器,第2,3個指明卷標字符串緩沖區及其長度,第4個返回磁盤序列號,第7,8個指明文件系統類型字符串緩沖區及其長度。調用如:<br>
Private Sub Command2_Click()<br>
Dim sType As String<br>
Dim sLabel As String<br>
sType = Space(20): sLabel = Space(20)<br>
Dim lxn As Long<br>
GetVolumeInformationA "c:\", sLabel, 20, lxn, 0, 0, sType, 20<br>
MsgBox "該驅動器卷標為" & sLabel<br>
MsgBox "該驅動器文件系統類型為" & sType<br>
MsgBox "該驅動器序列號為" & Str(lxn)<br>
End Sub<br>
---------------------------------------------<br>
查找本機上都有哪些驅動器:GetLogicalDriveStringsA函數<br>
該函數的第2個參數返回包含本機全部驅動器根路徑的字符串組合,從中分離即可得到每個驅動器,第1個參數指定第2個參數的緩沖區長度。<br>
聲明:<br>
Declare Function GetLogicalDriveStringsA Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long<br>
參數:<br>
nBufferLength Long,lpBuffer字串的長度<br>
LpBuffer String,用于裝載可用驅動器名稱的字串。每個名字都用一個ASC碼值為0的字符(NULL)分隔,在最后一個名字后面連同其本身規律的那個\0,就有了兩個ASCII 0終止。<br>
函數返回值為寫入字符串緩沖區的實際長度。<br>
調用如:<br>
Private Sub Command3_Click()<br>
Dim lxn As String<br>
lxn = String(255, " ")<br>
m% = GetLogicalDriveStrings(255, lxn)<br>
lxn = Left(lxn, m%)<br>
For x = 1 To m% '由于ASC碼值0會使其后的字符不顯示,所以要改為空格32。<br>
a = Asc(Mid(lxn, x, 1))<br>
If a = 0 Then a = 32 <br>
Letts= Letts & Chr(a) 'Letts最后返回值例如"a:\ c:\ d:\ e:\ f:\ "<br>
Next x<br>
Msgbox "本機全部驅動器:" & Letts<br>
End Sub<br>
----------------------------------------------<br>
格式化驅動器:SHFormatDrive函數<br>
Public Declare Function SHFormatDrive Lib "shell32.dll" (ByVal hWnd As Long, ByVal Drive As Long, fmtID As Long, Options As Long) As Long<br>
調用如(格式化軟盤):<br>
Private Const SHFMT_ID_DEFAULT = &HFFFF&<br>
Private Sub Command1_Click()<br>
Dim lret As Long<br>
lret = SHFormatDrive(Me.hWnd, 0, SHFMT_ID_DEFAULT, 0)<br>
Select Case lret<br>
Case -2<br>
MsgBox "格式化完成。"<br>
Case -3<br>
MsgBox "不能格式化只讀盤。"<br>
End Select<br>
End Sub<br>
第一個參數傳入的是本程序句柄,第二個參數指定驅動器,0為軟驅;第三個參數?第四個參數?。
<p align="center">
<br>
< <a href="040105.htm">上一頁</a>--<a href="http://www.xxby.com" target="_blank">華生小屋</a>--<a href="040107.htm">下一頁</a>
><br>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -