VB.NET 擷取磁碟資訊程式樣本

來源:互聯網
上載者:User

磁碟資訊執行個體說明

在本程式中,我們將產生一個能夠得到當前磁碟資訊的應用程式,跟右鍵點擊磁碟“屬性”得到的結果相似。運行後,選擇磁碟後,可以得到當前磁碟的序號、卷標、檔案類型、已用空間、未用空間、磁碟容量等資訊

技術要點

l 判斷磁碟機類型

l 取得磁碟的相關資訊

l 取得磁碟的使用空間、總空間

實現過程 ■ 建立項目
開啟Visual Studio.NET,選擇“建立項目”,在項目類型視窗中選擇“Visual Basic項目”,在模板視窗中選擇“Windows應用程式”,在名稱域中輸入“DiskInfo”,然後選擇儲存路徑。單擊“確認”。

■ 添加控制項
向當前表單上添加十六個Label控制項,一個Picture控制項,一個ComboBox控制項,一個Line控制項。

■ 設定屬性
根據表單的介面,將說明性的Label控制項的Text屬性改為和介面一致即可。在表96-1中列出了一些主要屬性,其餘屬性讀者可以參考光碟片。

表96-1 表單及控制項的屬性值

表單/控制項

屬性

值

Label10

Text

BackColor

&H000000FF

Label11

Text

Value

&H00FF0000

其他Label控制項

Autosize

True

Text

跟介面一致

■ 添加代碼
下列代碼是在模組中添加的

Option Strict Off

Module Module1

Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Integer

Public Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, ByRef lpVolumeSerialNumber As Integer, ByRef lpMaximumComponentLength As Integer, ByRef lpFileSystemFlags As Integer, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Integer) As Integer

Public Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, ByRef lpSectorsPerCluster As Integer, ByRef lpBytesPerSector As Integer, ByRef lpNumberOfFreeClusters As Integer, ByRef lpTotalNumberOfClusters As Integer) As Integer

End Module

下列代碼是在表單中添加的

Private Sub Combo1_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Combo1.SelectedIndexChanged

Dim buff As String

Dim retSerial, retRoot, retVolume1, retFlag As String

Dim retFSNbuffer As String

Dim lpBytesPerSector, lppercluster, lpfree As Integer

Dim lptotal As Integer

Dim freespace As Long

Dim totalspace As Double

Dim usespace As Double

Dim startang As Single

Dim endang As Single

Dim x As Integer

Dim retMaxLength As Integer

On Error Resume Next

buff = Combo1.Text & ":"

' 判斷磁碟機類型

x = GetDriveType(buff)

Select Case x

Case 2

lbldrivetype.Text = " 軟碟機"

Case 3

lbldrivetype.Text = "硬碟 "

Case 4

lbldrivetype.Text = " 網路磁碟機"

Case 5

lbldrivetype.Text = " CD - ROM磁碟機"

Case 6

lbldrivetype.Text = " RAMDISK磁碟機"

Case Else

lbldrivetype.Text = " "

End Select

' 得到卷標名稱

retVolume1 = New String(Chr(0), 255)

retFSNbuffer = New String(Chr(0), 255)

x = GetVolumeInformation(buff, retVolume1, Len(retVolume1), retSerial, retMaxLength, retFlag, retFSNbuffer, Len(retFSNbuffer))

'retVolume = retVolume & Chr(0)

lblFileSystem.Text = retFSNbuffer

lblvolume.Text = retVolume1

If lblvolume.Text = "" Then

lblvolume.Text = "無卷標"

End If

' 計算磁碟剩餘空間、已用空間和總空間

x = GetDiskFreeSpace(buff, lppercluster, lpBytesPerSector, lpfree, lptotal)

freespace = lpfree * lpBytesPerSector * lppercluster

totalspace = lptotal * lpBytesPerSector * CDbl(lppercluster)

'totalspace = totalspace * 10

lblUnusedSpace.Text = CStr(freespace) & "位元組 " & CStr(Int(freespace / 1024 / 1024)) & " MB"

lblTotalVolume.Text = CStr(totalspace) & " 位元組 " & CStr(Int(totalspace / 1024 / 1024)) & " MB"

lblUsedSpace.Text = CStr(totalspace - freespace) & " 位元組 " & CStr(Int((totalspace - freespace) / 1024 / 1024)) & " MB"

lblintro.Text = "磁碟機" & Combo1.Text

End Sub

' 表單啟動時,自動將當前系統上的磁碟添加到Combo控制項中

Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

Dim x As Integer

Dim i As Short

Dim buff As String

For i = 65 To 90

buff = Chr(i) & ":"

x = GetDriveType(buff)

If x > 1 Then

Combo1.Items.Add(Chr(i))

End If

Next

Combo1.Text = "C"

Call Combo1_SelectedIndexChanged(Combo1, New System.EventArgs())

End Sub

■ 運行程式
單擊菜單“調試|啟動”或單擊 表徵圖運行程式。

小結
我們通過使用這三個GetDriveType(),etVolumeInformation(),etDiskFreeSpace()API函數來得到有關磁碟的資訊。其中,GetDriveType()函數用於獲得有關磁碟機類型的資訊;GetVolumeInformation()函數用於獲得磁碟卷標的一些資訊;GetDiskFreeSpace()用於獲得磁碟剩餘空間和總空間資訊。


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.