簡體   English   中英

在Windows資源管理器中顯示Windows搜索結果

[英]Display a Windows Search result in Windows Explorer

使用Windows API代碼包我使用Windows搜索在此處(在C#中)編寫了此代碼。

如何在Windows資源管理器中顯示此結果(應在何處顯示)?

// create the leaf condition for the file name
        SearchCondition fileNameCondition =
            SearchConditionFactory.CreateLeafCondition(
            SystemProperties.System.FileName, textBox2.Text, 
            SearchConditionOperation.Equal);

        // create the search folder
        ShellSearchFolder searchFolder = new ShellSearchFolder(fileNameCondition(ShellContainer)NonFileSystemKnownFolder.FromParsingName(@>"C:\Users\ILIANHOME\Downloads"));    

簡單吧? 不適合我,我是一個非常新手的程序員,提前感謝任何幫助:)

不幸的是,這似乎並不需要Windows API代碼包來滿足。 該庫完全是關於獲取shell概念並將它們引入托管代碼。 在API級別,它在技術上獨立於“真正的”Windows shell,因此可以使用與實際COM shell API不同的數據提供程序來實現它。 考慮到這個目標,“返回”本機shell的能力很難,因為可能沒有本地shell可以回到(假設當然是說話;我不知道有人做出替代實現) 。 在這方面,庫似乎將自己視為框架類庫的擴展(這可能是有效的,因為一些特性 - 如JumpList - 最終使其成為核心庫)。

請注意,我不能代表庫的作者,以上是基於庫的結構和我與Microsoft的其他.NET庫的經驗的純粹推測。 但無論什么原因,這個功能似乎都不存在。

存在的是通過ExplorerBrowser控件(或它的WPF包裝器)創建自己的資源管理器窗口的能力。 有關示例,請參閱庫附帶的ExplorerBrowser示例。 我不能說我建議嘗試模仿資源管理器,即使有這些助手。

對於您啟動搜索窗口的特定問題,我建議您查看搜索:協議 ,看看它是否符合您的需求。 它沒有一個很好的對象模型來表示查詢,所以你必須自己創建一個(或者找一個,它可能存在)或者只使用字符串。 但它非常靈活。

您上面的特定問題可以實現為:

string folder = Uri.EscapeDataString(@"C:\Users\ILIANHOME\Downloads");
string file = '"' + Uri.EscapeDataString(textBox2.Text) + '"';
string uri = "search:query=filename:" + file + "&crumb=location:" + folder;
Process.Start(new ProcessStartInfo(uri));
  public void getPDF()
    {
                string folder = Uri.EscapeDataString(@"C:\");
                string file = "*.pdf* size:> 2 MB";
                string uri = "search:query=" + file + "&crumb=location:" + folder;
                Process.Start(new ProcessStartInfo(uri));
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM