ドライブの種類を調べる
指定されたドライブがどんな種類か調べるテクニックです。
サンプル(32bit) ダウンロード
'ドライブの種類のチェックAPI
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Public Const DRIVE_REMOVABLE = 2
Public Const DRIVE_FIXED = 3
Public Const DRIVE_REMOTE = 4
Public Const DRIVE_CDROM = 5
Public Const DRIVE_RAMDISK = 6
Private Sub FORMAT_SYORI(DRIVE_STR As String)
'フォーマットダイアログの表示
Dim sWORK_STR As String
Dim nDRIVE_NO As Long
Dim nRC As Long
'ドライブ名のA-Zチェック
sWORK_STR = StrConv(Left$(Trim$(DRIVE_STR), 1), vbUpperCase)
If (Asc(sWORK_STR) < 65) Or (90 < Asc(sWORK_STR)) Then
Beep
MsgBox "ドライブ名が不正です。" + Chr$(10) + Chr$(10) + "ドライブ名は A〜Z のみ指定できます。", vbCritical, "ドライブ名不正!!"
Exit Sub
End If
'リムーバブル ディスク チェック
If GetDriveType(sWORK_STR + ":\") <> DRIVE_REMOVABLE Then
Beep
MsgBox "ドライブ " + sWORK_STR + ": はリームバブル ディスクではありません。", vbExclamation, sSYORI_NAME + "[HD等は初期化できません]"
Exit Sub
End If
'ドライブ名→ドライブ番号に変更
nDRIVE_NO = Asc(sWORK_STR) - 65
Screen.MousePointer = vbHourglass
'フォーマットダイアログの表示
nRC = SHFormatDrive(Me.hwnd, nDRIVE_NO, 0, 1)
Screen.MousePointer = vbDefault
End Sub
サンプル解説
GetDriveType関数で指定されたドライブの種類を調べています。
引数は次の通りです。
(引数の名前は、Declare Functionで指定したものです)
メンバー I/O 説明 nDrive In ドライブ名
必ず、調べたいドライブのルートパスを指定します。(例:c:\)戻り値は次の通りです。
DRIVE_REMOVABLE FD・MO等のリムーバブルメディア DRIVE_FIXED ハードディスク DRIVE_REMOTE ネットワークドライブ DRIVE_CDROM CD−ROMドライブ DRIVE_RAMDISK RAMドライブ サンプルでは、指定されたドライブがリムーバブルメディアのドライブかどうかを調べています。
[ Window Close ]