投稿者 魔界の仮面弁士  (社会人) 投稿日時 2019/11/25 12:25:09
NuGet パッケージ マネージャーが組み込まれているバージョンの Visual Studio をお使いのようですね。それなら話が早い。(VS2008 等の古いバージョンや、VS 拡張機能が許可されていない環境だと、手動で組み込むなどの手間が発生するところでした)


> エキスプローラ
「エクスプローラー」ですね。


> (1)どちらからでもいいのでしょうか?
はい。どちらからでも同じように操作できます。

ただしソリューション エクスプローラーからの場合、
ソリューション(WindowsApp1.sln)を右クリックした場合と、
プロジェクト(WindowsApp1.vbproj)を右クリックした場合とで、
若干動作が異なりますので御注意ください。

後者は、選択されたプロジェクトのライブラリみが対象となります。

一方前者は、メニューの『ソリューションのNugetパッケージの管理(N)』と同じであり、
現在のソリューション内にあるプロジェクト群すべてに対して、
インストール/アンインストールを個別に選択できます。



> (2)どれを選べばいいのか選択基準などがあるのでしょうか?
Windows API Code Pack は元々、Microsoft によって開発・公開されたライブラリ群です。
https://blogs.msdn.microsoft.com/ttanaka/2010/10/03/windows-api-code-pack-teched2010-1/

その後、配布が終了して保守が行われなくなったため、有志がそれを再公開していますが、
元が同じものなので、基本的に誰が公開しているものでも大きく異なる物ではありません。
https://github.com/aybe/Windows-API-Code-Pack-1.1
https://github.com/devkimchi/Windows-API-Code-Pack-1.1


どれを選べばよいか悩んだ時は、ダウンロード数の多い物から試すとよいとは思いますが、
-Core 、-Shell、-ShellExtensions、-Sensors、-DirectX、-ExtendedLinguisticServices と
機能別に分かれているので、初見では選びにくいかと思います。
今回は Aybe 氏が公開されている『WindowsAPICodePack-Shell』 は如何でしょう。
https://www.nuget.org/packages/WindowsAPICodePack-Shell

※WindowsAPICodePack-Shell を組み込んだ場合、依存関係によって
 WindowsAPICodePack-Core も一緒に組み込まれます。


> (3)自宅のパソコン(複数)、バイト先のパソコン(複数)でも使用したいと思っています。
特に問題ありません。


【使い方】
Imports Microsoft.WindowsAPICodePack.Dialogs
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Using dlg As New CommonOpenFileDialog()
            dlg.IsFolderPicker = True
            dlg.Multiselect = False '単一選択 
            dlg.AllowNonFileSystemItems = False 'コントロール パネル等は選べないようにする 
            dlg.Title = "フォルダーを選んでください。"
            If dlg.ShowDialog() = CommonFileDialogResult.Cancel Then
                Return
            End If
            '単一選択モードでは FileName プロパティを使う 
            TextBox1.Text = dlg.FileName
        End Using
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Using dlg As New CommonOpenFileDialog()
            dlg.Multiselect = True  '複数選択 
            dlg.IsFolderPicker = True
            dlg.AllowNonFileSystemItems = False
            dlg.Title = "フォルダーを選んでください。"
            If dlg.ShowDialog() = CommonFileDialogResult.Cancel Then
                Return
            End If
            '複数選択モードでは FileNames プロパティを使う 
            ListBox1.DataSource = dlg.FileNames.ToArray()
        End Using
    End Sub
End Class