次の方法で共有


ドライブ情報の取得方法について

download.gifサンプル コードのダウンロード (vbmigtips_Drive.msi, 492 KB)

※ このサンプルをインストールするには Visual Studio 2005 が必要です。

ドライブの空き領域や種類などのドライブ情報を取得したい場合があると思います。そこで今回は、ドライブ情報を取得する方法について紹介します。今回はドライブの種類、ファイル システム、容量、空き領域の情報を取得します。

Visual Basic 6.0 で、ドライブ情報を取得する場合、Win32API 関数を使用する必要がありました。一方、Visual Basic 2005 では、System.IO.DriveInfo クラスを使用し、すべての論理ドライブ名を取得したり、ドライブ情報を取得したりすることができます。すべての論理ドライブ名を取得する場合は、GetDrives メソッドを使用します。今回は、図1 のように、ドライブ欄のコンボボックスのリストに論理ドライブ名をフォームのロード時に設定します。

drive_fig01.jpg
図1

ドライブ欄のリストから情報を取得したいドライブを選択すると、各ドライブ情報がテキストボックスに表示させます。ドライブの種類を取得する場合は DriveType プロパティ、ファイル システムを取得する場合は DriveFormat プロパティ、ドライブの容量を取得する場合は TotalSize プロパティ、空き領域を取得する場合は TotalFreeSpace プロパティを使用します。実装コードは以下のとおりです。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   Me.cmbName.Items.AddRange(System.IO.DriveInfo.GetDrives)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles cmbName.SelectedIndexChanged
   txtType.Clear()
   txtFormat.Clear()
   txtTotalSize.Clear()
   txtFreeSpace.Clear()

   Dim drive As New System.IO.DriveInfo(cmbName.Items(cmbName.SelectedIndex).ToString)
   txtType.Text = drive.DriveType.ToString
   Try
      txtFormat.Text = drive.DriveFormat
      txtTotalSize.Text = drive.TotalSize.ToString("N")
      txtFreeSpace.Text = drive.TotalFreeSpace.ToString("N")
   Catch ex As Exception
      txtFormat.Text = "不明"
   End Try
End Sub

リスト1

上記(リスト1)の「Me.cmbName.Items.AddRange(System.IO.DriveInfo.GetDrives)」で、すべての論理ドライブのドライブ名を取得し、コンボボックスの項目にセットします。「txtType.Text = drive.DriveType.ToString」でドライブの種類を、「txtFormat.Text = drive.DriveFormat 」でファイル システム情報をそれぞれ取得し、テキストボックスに表示します。また、「txtTotalSize.Text = drive.TotalSize.ToString("N")」でドライブの容量を取得し、「txtFreeSpace.Text = drive.TotalFreeSpace.ToString("N")」で空き領域の容量を取得します。取得した数値は、カンマ「,」の付いた形式に変換し、テキストボックスに表示します。上記を実装し、図1 のドライブ欄のリストから「C:¥」を選択します。すると、C ドライブの種類やファイル システム、容量、空き領域がそれぞれ取得され、テキストボックスに表示されます(図2)。

drive_fig02.jpg
図2