Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows资源管理器中打开一个文件夹,然后选择一个文件,该文件只能再次使用_C#_.net_Explorer_Windows Shell_Windows Explorer - Fatal编程技术网

C# 在Windows资源管理器中打开一个文件夹,然后选择一个文件,该文件只能再次使用

C# 在Windows资源管理器中打开一个文件夹,然后选择一个文件,该文件只能再次使用,c#,.net,explorer,windows-shell,windows-explorer,C#,.net,Explorer,Windows Shell,Windows Explorer,使用SO发布中所述的代码,我创建了此函数: public static void OpenExplorerAndSelectFile(string filePath) { Process.Start( @"explorer.exe", string.Format(@"/select, ""{0}""", filePath)); } 此功能运行良好,但有一个小问题: 第一次为特定文件调用该函数时,Windows资源管理器会正确显示该文件的文件夹,但它不会选

使用SO发布中所述的代码,我创建了此函数:

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看起来和我做的有点不同

我的问题:

有没有办法调试/跟踪Google Chrome调用的Win32/Shell方法


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

尝试使用shell函数。“

而不是浏览器命令行,Chrome最可能使用更灵活的shell API


包含所需的p/invoke/implementation。

我无法在Win7/x64上复制此内容。对我来说,它第一次选择文件,但它不会重复使用打开的窗口,它总是创建一个新的
SHOpenFolderAndSelectItems
:@AlexK。这非常好用,非常感谢!也许你可以把这个作为一个答案,这样我就可以接受了?那么你基本上是复制了Alex K.的评论。?