ヘッダー

VB.NET2002対応 VB.NET2003対応 VB2005対応

 

Visual Basic 中学校 > VB.NET サンプル >

フロッピーディスクドライブを取得する

以下のFloppy関数を使うと フロッピーディスクドライブを"A:\"のような文字列として取得できる。

ただし、実際にはFloppy関数は一番初めのリムーバブルメディアドライブを取得するだけなので、取得したドライブはUSBメモリ等である可能性もある。しかし、ほとんどの環境でフロッピーディスクドライブは一番初めのリムーバブルメディアドライブである。

VB2005対応

'■Floppy
''' <summary>一番初めのリムーバブルメディアドライブを取得する。</summary>
''' <returns>ドライブ文字。例:"A:\"。該当がない場合には空文字。</returns>
''' <remarks>たいていの場合戻り値のドライブはフロッピーディスクドライブです。</remarks>
Private Function Floppy() As String

    Dim oDrive As IO.DriveInfo

    For Each oDrive In IO.DriveInfo.GetDrives
        If oDrive.DriveType = IO.DriveType.Removable
Then
           
Return oDrive.Name
        End
If
   
Next

    Return ""

End Function

 

VB.NET2003以前にはDriveInfoクラスがないので以下のようAPIを使用する。

VB.NET2002対応 VB.NET2003対応 VB2005対応

'Imports System.Runtime.InteropServices を先頭に記述してください。

Private Declare Ansi Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" ( _
    ByVal nDrive As String _
) As
Integer

Private Declare Ansi Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" ( _
    ByVal nBufferLength As Integer, _
    <MarshalAs(UnmanagedType.LPArray)> ByVal lpBuffer() As Byte _
) As
Integer

'■Floppy
'■機能:フロッピーディスクドライブが何ドライブか調べる
'■戻り値:フロッピーディスクドライブ名。たとえば"A:\"。
'■ フロッピーディスクドライブが見つからないときは空文字を返す。
Public Function Floppy() As String

    Dim Buffer(105) As Byte
   
Dim DriveList As String
   
Dim K As Integer

    '有効なドライブの一覧を取得する。
   
Call GetLogicalDriveStrings(Buffer.Length, Buffer)

    'NULLをはずす。
   
For K = 0 To Buffer.Length - 1
        If Buffer(K) <> 0
Then
           
DriveList = DriveList & Chr(Buffer(K))
        End
If
   
Next K

    'それぞれのドライブのタイプをチェックする。
   
For K = 1 To Len(DriveList) \ 3
        If GetDriveType(Mid(DriveList, (K - 1) * 3 + 1, 3)) = 2
Then
           
Return Mid(DriveList, (K - 1) * 3 + 1, 3)
        End
If
   
Next K

    Return ""

End Function


VB6対応フロッピーディスクドライブを取得する参照