中的术语创建保存的搜索(.search-ms)是否存在一些C#代码,用于按照与ISearchQueryHelper相同的方式在资源管理器搜索框中输入的搜索术语中创建保存的查询文件(.search-ms)将搜索条件扩展到Windows Search API的OLEDB查询中?或者将OLEDB查询转换为.search-ms文件的代码?我想在资源管理器中显示Windows搜索的结果 - 我可以在网格中显示OleDb查询结果,但更愿意使用资源管理器。从资源管理器搜索框
0
A
回答
0
原来,创建保存的搜索并运行它并不是启动显示过滤结果的Windows /文件资源管理器窗口的最简单方法,因为保存的搜索XML非常复杂以编程方式生成。将搜索框左侧的框内容作为URL并将其提供给Internet Explorer将提供正确的结果。
文件夹
C:\Users\Simon\Pictures\iPhoneSample
在输入搜索字符串
name:~ "*[*2602_Australia_Australian Capital Territory_Downer*].*" OR name:~ "*[*2602_Australia_Australian Capital Territory_O'Connor*].*"
后显示预期的结果。点击显示“搜索中iPhoneSample结果”左手框显示:
search-ms:displayname=Search%20Results%20in%20iPhoneSample&crumb=name%3A~"*[*2602_Australia_Australian%20Capital%20Territory_Downer*].*"%20OR%20name%3A~"*[*2602_Australia_Australian%20Capital%20Territory_O'Connor*].*"&crumb=location:C%3A%5CUsers%5CSimon%5CPictures%5CiPhoneSample
提供此作为URL来互联网浏览器(iexplore.exe的,而不是Explorer.exe中)显示了一个新的Windows /文件,浏览器窗口预期的搜索结果。这样做的某些C#代码如下所示:
/// <summary>
/// Show Windows Explorer in new window with results filtered by search string
/// </summary>
/// <param name="sCommonFolder">Folder to search in </param>
/// <param name="sSearchString">search string</param>
private void ShowSearchResultsInExplorer(string sCommonFolder, string sSearchString)
{
// sCmd = "search-ms:displayname=Search%20Results%20in%20iPhoneSample&crumb=name" & _
//"%3A~""*[*2602_Australia_Australian%20Capital%20Territory_Downer*].*""%20OR%20name%3A~""" & _
//"*[*2602_Australia_Australian%20Capital%20Territory_O'Connor*].*""&crumb=location:C%3A%5CUsers%5CSimon%5CPictures%5CiPhoneSample"
string sFilter = "search-ms:displayname=";
sFilter += Uri.EscapeDataString("Tagged files in " + sCommonFolder);
sFilter += @"&crumb=" +sSearchString;
sFilter += @"&crumb=location:" + Uri.EscapeDataString(sCommonFolder);
Process.Start("IExplore.exe", sFilter);
}
显示搜索结果之后,窗口需要显示后续搜索结果之前被关闭,否则随后的结果不显示。这可以用下面的代码来完成:
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows();
foreach (SHDocVw.InternetExplorer window in shellWindows)
{
Console.Write ("Window " + window.LocationName + " " + window.LocationURL + " " + window.Name + " " + window.HWND + "\r\n");
if (window.LocationName.Contains("Tagged files"))
{
SendMessage((IntPtr)window.HWND, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
}
}
此代码需要一些声明:
using System.Web;
using System.Runtime.InteropServices;
....
static uint WM_CLOSE = 0x10;
...
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
相关问题
- 1. 搜索文件与Windows资源管理器
- 2. 如何用TFS团队资源管理器搜索项目?
- 3. Visual Studio 2012解决方案资源管理器搜索不搜索cshtml文件
- 4. DragNDrop从Java到Windows资源管理器
- 5. 从ANT启动Windows资源管理器?
- 6. 从C控制Windows资源管理器#
- 7. NetBeans项目的从资源管理器
- 8. 从WSL启动资源管理器
- 9. Coherence资源管理器
- 10. Eclipse CVS资源管理器
- 11. PyDev包资源管理器
- 12. 在Windows资源管理器
- 13. Azure资源管理器
- 14. 在Windows资源管理器
- 15. 在VS 2015中搜索文件名或DLL - 源代码管理资源管理器
- 16. Android中的文件资源管理器像Windows资源管理器
- 17. TFS项目在源代码管理资源管理器中可见,但不在团队资源管理器中?
- 18. Lucene搜索管理器
- 19. JPA实体管理器资源处理
- 20. Android资源管理
- 21. Impala资源管理
- 22. Visual Studio 2008源代码管理资源管理器与Subversion
- 23. TFS和源代码管理资源管理器
- 24. VS 2008和源代码管理资源管理器错误
- 25. ApexSQL搜索需要对象资源管理器连接到数据库的MySQL
- 26. 正在搜索类似于UI组件的Windows资源管理器
- 27. “View As”已从Visual Studio 2012源代码管理资源管理器中删除
- 28. 无法从Eclipse的数据源资源管理器
- 29. 基于jquery的文件资源管理器/管理器
- 30. 如何从服务器资源管理器检索连接字符串