投稿者 豆腐  (社会人) 投稿日時 2023/7/10 21:11:37
魔界の仮面弁士様、ありがとうございます。

「Microsoft.WindowsAPICodePack.Controls.WindowsForms.ExplorerBrowser」を使った方法を試しているのですが、
当方ではコンテンツの検索結果がExplorerBrowserに表示されません。

>検索時に「ファイル コンテンツ」を有効にしてください。
は、Explorerで検索タブが表示されている場合の事だと思いますが、検索前はそもそも「検索タブ」が表示されないので、
前回書いたように、「表示」タブ=>「オプション」で開かれる「フォルダーオプション」の
「検索」タブ=>「ファイル名と内容を常に検索する」にチェックを入れています。

■検証方法
検索ワードは「みかん」と仮定して、「みかん」を「含む/含まない」、それぞれのxlsxファイルを
「C:\xxx\xxx\xlsxフォルダ」に用意して実験しています。
Explorerで「C:\xxx\xxx\xlsxフォルダ」を開き、直接、検索ボックスに「みかん」と入力すれば期待通り
中身に「みかん」が含まれるファイルのみ列挙されます。
しかし、以下のコードではExplorerBrowserに何も表示されません。ご指導、お願いします。

「プロトコル」と「ShellWindows コレクションからウィンドウハンドルを拾う方法」は、試したいのですが
現在、そこまで手が回りません。「COM API 」は敷居が高そうなのでパスです。

 
Imports Microsoft.WindowsAPICodePack.Controls
Imports Microsoft.WindowsAPICodePack.Shell
Imports Microsoft.WindowsAPICodePack.Shell.PropertySystem
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim pv = Me.ExplorerBrowser1.NavigationOptions.PaneVisibility
        pv.Navigation = PaneVisibilityState.Hide
        pv.Commands = PaneVisibilityState.Hide
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim searchString = "みかん"
        Dim sco = SearchConditionOperation.WordEqual '★ここの設定がわからない 
        Dim sc = SearchConditionFactory.CreateLeafCondition(SystemProperties.System.FileName, searchString, sco)
        Dim dir = ShellObject.FromParsingName("C:\xxx\xxx\xlsxフォルダ")
        Dim ssf As New ShellSearchFolder(sc, dir)
        Me.ExplorerBrowser1.Navigate(ssf)
    End Sub
End Class