ドライブリストボックスにHDDのみ表示させるには?

解決


コドナ  2002-03-18 16:04:19  No: 104094

ドライブリストボックスに表示されるドライブをHDDだけにしたいのですが、
どのようにしたら実現できるのでしょうか?


マザー  2002-03-18 21:11:42  No: 104095

DriveListBoxのプロパティで
出来るとは思えませんが。
DriveListBoxにこだわらないのであれば
可能です。
次のAPIをしようしてHDDだけを取得
GetLogicalDriveStringsを使用して全論理ドライブの取得
GetDriveTypeを使用して上記のドライブのうちHDDのみを
列挙するといったぐあいですかね。
このHPのAPI関連にサンプルがあると思います。


コドナ  2002-03-19 19:09:36  No: 104096

マザーさんご返事どうもありがとうございます。
DriveListBoxは置いておいて、教えて頂いた方法で一応実現することができました。
ですが・・GetLogicalDriveStringsの使用中、新たな疑問が生じてしまいました。というのは、
Ret = GetLogicalDriveStrings(nLeng, nDrive)
で nDriveに「 A:\・C:\・D:\・E:\・・・・・」とに入ったとします.
そこで 「 Me.Print Mid(nDrive,4,1) 」とすると「・」が表示されますが、
「 Me.Print Mid(nDrive,4,1) = "・" 」とすると 「False」となるのは何故なのでしょうか?
一応うまくいったコードを書いておきます。

Private Sub Form_Load()
Dim Ret As Long
Dim nDrive As String
Dim nLeng As Long
Dim drive As String

    nDrive = String(250, Chr(0))
    nLeng = Len(nDrive)

    Ret = GetLogicalDriveStrings(nLeng, nDrive)
    drive = Left(nDrive, 3)

    '※↓ここを Do While Left(drive,1)<>"・" とするとエラーになる。なぜ?
    Do While drive Like "?:\"
        If GetDriveType(drive) = DRIVE_FIXED Then 'ドライブがHDDなら
            Combo1.AddItem Left(drive, 1)
        End If
        nDrive = Right(nDrive, Len(nDrive) - 4)
        drive = Left(nDrive, 3)
    Loop

End Sub


マザー  2002-03-19 20:34:23  No: 104097

推測ですいませんが
<> Chr(0)でも駄目ですか?


コドナ  2002-03-19 20:53:11  No: 104098

早速 <> Chr(0)で試してみましたが、うまくいきました。
ですが、<> "・" でうまくいかないのは何故なんでしょうかね?
とりあえず最初の質問については、おかげさまで解決できたのでチェックを付けておきます。
もし <> "・" でうまくいかない原因をお知りでしたら、申し訳ございませんがまた教えて頂きたく思っております。


コドナ  2002-03-19 20:55:17  No: 104099

↑ごめんなさい。言っておきながらチェックするの忘れてしまいました・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加