在Windows资源管理器中显示Windows搜索结果

时间:2013-03-31 21:55:59

标签: c# windows search 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"));    

简单吧?不适合我,我是一个非常新手的程序员,提前感谢任何帮助:)

2 个答案:

答案 0 :(得分:5)

不幸的是,似乎并不需要Windows API代码包来满足。该库完全是关于获取shell概念并将它们引入托管代码。在API级别,它在技术上独立于“真正的”Windows shell,因此可以使用与实际COM shell API不同的数据提供程序来实现它。考虑到这个目标,“返回”本机shell的能力很难,因为可能没有本地shell可以回到(当然假设说话;我不知道有人做出替代实现) 。在这方面,库似乎将自己视为框架类库的扩展(这可能是有效的,因为一些特性 - 如JumpList - 最终使它成为核心库)。

请注意,我不能代表该库的作者,以上是纯粹基于库的结构和我与Microsoft的其他.NET库的经验的推测。但无论什么原因,这个功能似乎都不存在。

通过ExplorerBrowser控件(或它的WPF包装器)创建自己的资源管理器窗口的能力是什么。有关示例,请参阅库附带的ExplorerBrowser示例。我不能说我建议尝试模仿资源管理器,即使是这些帮助者。

对于启动搜索窗口的特定问题,我建议您查看search: protocol,看看它是否符合您的需求。它没有一个很好的对象模型来表示查询,所以你必须自己创建一个(或者找一个,它可能存在)或者只使用字符串。但它非常灵活。

您上面的特定问题可以实现为:

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));

答案 1 :(得分:2)

var arr = [
    {date: Wed Jan 20 2016 
        type: "Apples"}, 
    {date: Mon Feb 29 2016
        type: "Peaches"},
    {date: Thu Mar 31 2016 
        type: "Apples"},
    {date: Fri Apr 22 2016 
        type: "Apples"},
    {date: Fri Apr 22 2016 
        type: "Apples"},
    {date: Fri Apr 22 2016 
        type: "Apples"},
    {date: Fri Apr 22 2016 
        type: "Strawberries"}
]