代码之家  ›  专栏  ›  技术社区  ›  Uwe Keim Chand

在Windows资源管理器中打开文件夹并选择一个文件,该文件只能在第二次使用

  •  9
  • Uwe Keim Chand  · 技术社区  · 10 年前

    使用中描述的代码 this answer SO过帐的 "Open folder and select the file" ,我创建了此函数:

    public static void OpenExplorerAndSelectFile(string filePath)
    {
        Process.Start(
            @"explorer.exe",
            string.Format(@"/select, ""{0}""", filePath));
    }
    

    该功能运行良好,但有一个小问题:

    首次为特定文件调用该函数时,Windows资源管理器会正确显示文件的文件夹,但 不选择文件 .

    对同一文件再次调用相同的函数,它将切换回Windows资源管理器中已打开的文件夹,然后选择该文件。

    例如,第一次呼叫 OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt") 在新的Windows资源管理器窗口中打开文件夹“C:\MyFolder”。第二次呼叫 OpenExplorerAndSelectFile(“C:\MyFolder\MyFile.txt”) 实际上再次激活该窗口并选择 MyFile.txt .

    在Google Chrome中做类似的事情(转到下载页面并显示以前下载的文件)实际上在第一次尝试时效果很好。

    所以我的结论是,谷歌Chrome似乎与我做的有点不同。

    我的问题:

    有没有方法调试/跟踪GoogleChrome调用的Win32/Shell方法?

    然后我会将它们与我所做的进行比较,以了解差异。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Community Egal    7 年前

    与浏览器命令行相比,Chrome最可能使用的是更灵活的 SHOpenFolderAndSelectItems 壳牌API。

    This answer 包含所需的p/invoke/实现。

        2
  •  -3
  •   user3427376    10 年前

    尝试使用shell函数“ SHOpenFolderAndSelectItems ".