使用可能ドライブ一覧と種類の取得             <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