使用可能ドライブ一覧と種類の取得 <TOP>
使用可能ドライブ一覧と種類を取得します。
GetLogicalDrives 使用可能ドライブ一覧取得
GetDriveType 使用可能ドライブ種類取得
'================================================================ '= ドライブの種類を取得 '= (DriveInfo.bas) '================================================================ #include "Windows.bi" ' 有効なドライブの情報を取得。ディスクの挿入の有無やネットワークに接続されているかなどは関係なく、現在割り当てられている全てのドライブ一覧を返す Declare Function Api_GetLogicalDrives& Lib "kernel32" Alias "GetLogicalDrives" () ' ドライブのタイプを取得 Declare Function Api_GetDriveType& Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive$) #define DRIVE_CDROM 5 'CD-ROMドライブ #define DRIVE_FIXED 3 '固定タイプ−主にハードディスク #define DRIVE_NO_ROOT_DIR 1 'ルートディレクトリ無し #define DRIVE_RAMDISK 6 'RAMドライブ #define DRIVE_REMOTE 4 'ネットワーク #define DRIVE_REMOVABLE 2 '取り外し可能タイプ−リムーバブルディスク #define DRIVE_UNKNOWN 0 'ドライブが不明 Var Shared List1 As Object Var Shared Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 12 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () sub Button1_on() Var i As integer 'カウンタ Var DrvStr As String 'ドライブ名 Var Drives As Long 'ディスクドライブのビットマスク Var DrvType As Long 'ドライブタイプ Drives = Api_GetLogicalDrives() '現在利用可能なディスクドライブをビットマスク形式で取得 If Drives = 0 Then Exit Sub '関数の失敗 List1.ResetContent For i = 0 To 25 'A〜Zドライブを検索する If (Drives And 1) = 1 Then DrvStr = Chr$(65 + i) 'ドライブ名(A〜Z)に変換 DrvStr = DrvStr & ":\" DrvType = Api_GetDriveType(DrvStr) 'そのドライブがどういうドライブタイプかをチェックする Select Case DrvType Case DRIVE_REMOVABLE List1.AddString (DrvStr & " リムーバブルディスク") Case DRIVE_FIXED List1.AddString (DrvStr & " ハードディスク") Case DRIVE_REMOTE List1.AddString (DrvStr & " ネットワーク") Case DRIVE_CDROM List1.AddString (DrvStr & " CD-ROMドライブ") Case DRIVE_RAMDISK List1.AddString (DrvStr & " RAMドライブ") Case else List1.AddString (DrvStr & " 不明ドライブ") End Select End If Drives = Drives \ 2 '1ビットずつシフトさせていき、検索を続ける Next End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End