在Windows资源管理器中打开文件夹,然后选择仅第二次运行的文件

时间:2014-03-22 14:20:56

标签: c# .net explorer windows-shell windows-explorer

使用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方法?

然后我会将它们与我所做的比较以查看差异。

2 个答案:

答案 0 :(得分:2)

Chrome不是使用资源管理器命令行,而是使用更灵活的SHOpenFolderAndSelectItems Shell API。

This answer包含所需的p / invoke / implementation。

答案 1 :(得分:-3)

尝试使用shell函数" SHOpenFolderAndSelectItems"。