ドライブ検索

解決


すえ太郎  2004-01-21 16:01:20  No: 111497  IP: [192.*.*.*]

お世話になります。
vb6でフロッピードライブやCDR/Wドライブの存在するか?
有ればそのドライブ名を知りたいのですが?
どうすればよろしいですか?

編集 削除
すえ太郎  2004-01-21 16:39:54  No: 111498  IP: [192.*.*.*]

追加です。
自作ソフトをフロッピーやCDに書込したいのですが。
パソコンによってドライブが違うため、デフォルトでドライブを決められません。
パソコン毎に書込可能なドライブをデフォルト表示したいのですが。

編集 削除
いな  2004-01-21 17:32:09  No: 111499  IP: [192.*.*.*]

API関数のGetDriveTypeを使用します
GetDriveType  =>ドライブのタイプを取得  
    <引数>
          nDrive:ドライブを指定
    @戻り値@
          0  未知      
          1  存在しない
          2  フロッピーディスク
          3  ハードディスク
          4  ネットワークドライブ
          5  CD- ROM
          6  RAMディスクドライブ

CDR/RWまで分かるかどうかは分かりませんが、
フロッピーディスクドライブは識別できそうです。

編集 削除
いな  2004-01-21 17:51:51  No: 111500  IP: [192.*.*.*]

花ちゃんのサイト(http://www.bcap.co.jp/hanafusa/index.html)にコードが具体的に載っているので、転記しておきます。
--

Option Explicit     'SampleNo=079  WindowsXP VB6.0(SP5) 2002.05.17

'ドライブの種類を取得する(P914)
Private Declare Function GetDriveType Lib "kernel32" _
    Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Const DRIVE_TYPE_UNDTERMINED = 0 'ドライブが不明
Private Const DRIVE_NO_ROOT_DIR = 1      'ルートディレクトリなし
Private Const DRIVE_REMOVABLE = 2        'フロッピー又はリムーバブルディスク
Private Const DRIVE_FIXED = 3            '固定ディスク(ハードディスク)
Private Const DRIVE_REMOTE = 4           'リモート又はネットワークドライブ
Private Const DRIVE_CDROM = 5            'CD-ROMドライブ
Private Const DRIVE_RAMDISK = 6          'RAM ディスク


Private Sub Command1_Click()
    Dim i     As Integer
    Dim Ret   As Long
    Dim Drive As String
    List1.Clear
    For i = 65 To 75      'A〜Kドライブまでを調査
        Drive = Chr$(i) & ":\"
        Ret = GetDriveType(Drive)
        Select Case Ret
            Case DRIVE_TYPE_UNDTERMINED
                List1.AddItem Chr$(i) & _
                        " : 不明なドライブです。"
            Case DRIVE_NO_ROOT_DIR
                List1.AddItem Chr$(i) & _
                        " : ルートディレクトリがありません。"
            Case DRIVE_REMOVABLE
                List1.AddItem Chr$(i) & _
                        " : フロッピー又はリムーバブルディスクです。 "
            Case DRIVE_FIXED
                List1.AddItem Chr$(i) & _
                        " : 固定ディスク(ハードディスク)です。 "
            Case DRIVE_REMOTE
                List1.AddItem Chr$(i) & _
                        " : リモート又はネットワークドライブです。 "
            Case DRIVE_CDROM
                List1.AddItem Chr$(i) & _
                        " : CD-ROMドライブです。 "
            Case DRIVE_RAMDISK = 6
                List1.AddItem Chr$(i) & _
                        " : RAM ディスクです。 "
        End Select
    Next i
End Sub

編集 削除
すえ太郎  2004-01-21 19:07:39  No: 111501  IP: [192.*.*.*]

ありがとうございました。
GetDriveTypeの使用で解決出来ました。

編集 削除