ドライブの種類を取得 (SNo.037) | |
使用コントロール | Button2 Button3 |
その他条件 | WindowsXP(Vista) Visual Basic 2005(VB2008) Windows 7 / Visual Basic 2010 |
★ ドライブの種類を取得(Win32 API 関数を使った方法)
'-------- 下記の位置に名前空間を定義 ---------------------- Imports System.Runtime.InteropServices Public Class Form1 '----------- ドライブの種類を取得する Win32 API 関係の宣言部分 ---------- 'Imports System.Runtime.InteropServices を記述の事 'ドライブの種類を取得する Win32 API 関数の宣言(914) <DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _ Private Shared Function GetDriveType( _ ByVal pRootPathName As String) As Integer End Function 'ドライブの種類を取得する定数 Private Enum DRIVETYPE As Integer DRIVE_UNKNOWN = 0 'ドライブが不明 DRIVE_NO_ROOT_DIR = 1 'ルートフォルダーなし DRIVE_REMOVABLE = 2 'フロッピー又はリムーバブルディスク DRIVE_FIXED = 3 '固定ディスク(ハードディスク) DRIVE_REMOTE = 4 'リモート又はネットワークドライブ DRIVE_CDROM = 5 'CD-ROMドライブ DRIVE_RAMDISK = 6 'RAM ディスク End Enum '------------------- Win32 API 関係の宣言部分 ここまで ------------------ Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click 'ドライブの種類を取得(APIを使った方法) Dim strDriveType As String = "" For Each sDrive As String In System.IO.Directory.GetLogicalDrives() Select Case GetDriveType(sDrive) Case DRIVETYPE.DRIVE_UNKNOWN strDriveType = " : 不明なドライブ" Case DRIVETYPE.DRIVE_NO_ROOT_DIR strDriveType = " : ルートフォルダーがありません。" Case DRIVETYPE.DRIVE_REMOVABLE strDriveType = " : リムーバブルディスク" Case DRIVETYPE.DRIVE_FIXED strDriveType = " : ハードディスク" Case DRIVETYPE.DRIVE_REMOTE strDriveType = " : リモートドライブ" Case DRIVETYPE.DRIVE_CDROM strDriveType = " : CD-ROMドライブ" Case DRIVETYPE.DRIVE_RAMDISK strDriveType = " : RAM ディスク" End Select Debug.WriteLine(sDrive & strDriveType) Next '結果 私の環境での取得結果 ' A:\ : リムーバブルディスク ' C:\ : ハードディスク ' D:\ : ハードディスク ' E:\ : CD-ROMドライブ ' F:\ : ハードディスク ' G:\ : リムーバブルディスク End Sub '------------------- VB2005 以降は、下記で取得できます。 ------------------ Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click 'DriveInfo クラスは .NET Framework version 2.0 で新しく追加されたものです。 For Each d As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives() Console.WriteLine("{0} : {1}", d.Name, d.DriveType) Next '結果 私の環境での取得結果 ' A:\ : Removable ' C:\ : Fixed ' D:\ : Fixed ' E:\ : CDRom ' F:\ : Fixed ' G:\ : Removable End Sub End Class |