使用SO帖子this answer的"Open folder and select the file"中描述的代码,我创建了此功能:
public static void OpenExplorerAndSelectFile(string filePath)
{
Process.Start(
@"explorer.exe",
string.Format(@"/select, ""{0}""", filePath));
}
此功能运行良好,只有一个小问题:
首次为特定文件调用该功能时,Windows资源管理器会正确显示文件夹,但不会选择文件。
再次为同一个文件调用相同的函数,它会切换回Windows资源管理器中已打开的文件夹,然后选择该文件。
E.g。第一次拨打OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")
会打开文件夹" C:\ MyFolder"在新的Windows资源管理器窗口中。第二次调用OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")
实际上会再次激活该窗口并选择MyFile.txt
。
在例如做类似的事情谷歌浏览器(转到下载页面并显示以前下载的文件)实际上在第一次尝试时效果很好。
所以我的结论是谷歌Chrome似乎与我有点不同。
我的问题:
有没有办法调试/跟踪谷歌Chrome调用的Win32 / Shell方法?
然后我会将它们与我所做的比较以查看差异。
答案 0 :(得分:2)
Chrome不是使用资源管理器命令行,而是使用更灵活的SHOpenFolderAndSelectItems
Shell API。
This answer包含所需的p / invoke / implementation。
答案 1 :(得分:-3)
尝试使用shell函数" SHOpenFolderAndSelectItems"。