ドライブリストボックスに表示されるドライブをHDDだけにしたいのですが、
どのようにしたら実現できるのでしょうか?
DriveListBoxのプロパティで
出来るとは思えませんが。
DriveListBoxにこだわらないのであれば
可能です。
次のAPIをしようしてHDDだけを取得
GetLogicalDriveStringsを使用して全論理ドライブの取得
GetDriveTypeを使用して上記のドライブのうちHDDのみを
列挙するといったぐあいですかね。
このHPのAPI関連にサンプルがあると思います。
マザーさんご返事どうもありがとうございます。
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
推測ですいませんが
<> Chr(0)でも駄目ですか?
早速 <> Chr(0)で試してみましたが、うまくいきました。
ですが、<> "・" でうまくいかないのは何故なんでしょうかね?
とりあえず最初の質問については、おかげさまで解決できたのでチェックを付けておきます。
もし <> "・" でうまくいかない原因をお知りでしたら、申し訳ございませんがまた教えて頂きたく思っております。
↑ごめんなさい。言っておきながらチェックするの忘れてしまいました・・
ツイート | ![]() |