none
ドライブ名の取得について RRS feed

  • 質問

  • 現在、VS2008 Vb.net FreameWork2.0を使用し、

    自作でマイコンピューター表示やデスクトップの表示を作成しているのですが、

    その際、ドライブの名前を取得でつまずいてしまいました。

     

    VB.netにて IO.DriveInfoを使用し、種類やパスの取得した場合、

    固定ドライブでは、マイ コンピュータで表示している名前と同じ名前が取得出来ますが、

    空CDドライブは、VolumeLabelが空なので取得できず、

    ネットワークドライブは、表示名と名前が別?なため、

    同一の名前が取得出来ません。

    どのようなAPI等を使用すれば、マイコンピューターで表示されている

    使えば良いのでしょうか?

    もし、知っている方がいらっしゃいましたらご教授願えませんか?

    よろしくお願いします。

    2010年12月1日 7:22

回答

  • マイコンピュータと同じ、となるとシェル系の COM インターフェイスを扱うことになりますかね。

    参照設定で、COM 参照タブの Shell32.dll を参照します。

    Shell オブジェクトを New し、その Shell のNameSpace(0) で Folder オブジェクトを取得。

    取得した Folder の ParseName に DriveInfo の RootDirectory.FullPath を渡して目的のドライブの FolderItem オブジェクトを取得。

    この FolderItem オブジェクトの Name プロパティに格納されています。

    • 回答としてマーク AKINORI_HG 2010年12月2日 5:47
    2010年12月1日 8:02

すべての返信

  • マイコンピュータと同じ、となるとシェル系の COM インターフェイスを扱うことになりますかね。

    参照設定で、COM 参照タブの Shell32.dll を参照します。

    Shell オブジェクトを New し、その Shell のNameSpace(0) で Folder オブジェクトを取得。

    取得した Folder の ParseName に DriveInfo の RootDirectory.FullPath を渡して目的のドライブの FolderItem オブジェクトを取得。

    この FolderItem オブジェクトの Name プロパティに格納されています。

    • 回答としてマーク AKINORI_HG 2010年12月2日 5:47
    2010年12月1日 8:02
  • ご回答ありがとうございます。

    返答して頂いた様に下記手順で無事取得出来ました。

    1.Vb.netの参照設定で、Microsoft Shell Controls And Automationを追加

    2.VB.netで以下のように記載

    ※サンプルでPドライブにしてみました

            Dim shell As Shell32.Shell = New Shell32.ShellClass()
            Dim folder As Shell32.Folder = shell.NameSpace(0)
            Dim folderItem As Shell32.FolderItem = folder.ParseName("P:\")
            Dim name As String = folderItem.Name

    Shellを使うことがほぼ無かったので勉強になりました。

    ありがとうございました。

     

     

    2010年12月2日 5:51