C# 在Windows资源管理器中打开一个文件夹,然后选择一个文件,该文件只能再次使用
使用SO发布中所述的代码,我创建了此函数: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资源管理器会正确显示该文件的文件夹,但它不会选
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.的评论。?