ディスクドライブにメディアが挿入されているか判定 <TOP>
GetLogicalDrives 利用可能ディスクドライブ取得
Visual Basic では、IsReady などで、簡単に取得できるのですが・・・
例では、エラーが発生した場合、メディアが準備されていないと判断しています。
'================================================================ '= ディスクドライブにメディアが挿入されているか判定 '= (MediaInDrive.bas) '================================================================ #include "Windows.bi" #include "File.bi" ' 利用可能ディスクドライブ取得 Declare Function Api_GetLogicalDrives& Lib "kernel32" Alias "GetLogicalDrives" () Var Shared Combo1 As Object Var Shared Button1 As Object Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared Drv As String '================================================================ '= '================================================================ Declare Function MediaCheck(DriveLetter As String) As Integer Function MediaCheck(DriveLetter As String) As Integer Var Target As String Var Ret As String On Error GoTo *Er_Trap '「:」が無い場合の処理 Target = Left$(DriveLetter, 1) Target = Target & ":" Ret = CrDir$(Target) MediaCheck = True *Er_Return On Error GoTo 0 Exit Function *Er_Trap MediaCheck = False Resume *Er_Return End Function '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var Ret As Long Ret = Api_GetLogicalDrives() '利用可能なディスクドライブ取得 If Ret = 0 Then Exit Sub '関数の失敗 For i = 0 To 25 'A〜Zドライブを検索する If (Ret And 1) = 1 Then Drv = Chr$(65 + i) 'ドライブ名(A〜Z)に変換 Drv = Drv & ":\" Combo1.AddString Drv End If Ret = Ret \ 2 'ドライブ検索 Next i End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Drv = Combo1.GetWindowText If MediaCheck(Drv) = False Then A% = MessageBox("", "メディアを挿入してください", 0, 2) Else A% = MessageBox("", "アクセス可能です。", 0, 2) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End