我正在尝试使用选中的文件在资源管理器中打开一个文件夹.
以下代码生成一个未找到文件的异常:
System.Diagnostics.Process.Start(
"explorer.exe /select,"
+ listView1.SelectedItems[0].SubItems[1].Text + "\\"
+ listView1.SelectedItems[0].Text);
Run Code Online (Sandbox Code Playgroud)
如何在C#中执行此命令?
我可以在Windows资源管理器中显示和选择单个文件,如下所示:
explorer.exe /select, "c:\path\to\file.txt"
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何选择多个文件.没有选择的排列我尝试过工作.
注意:我查看了这些页面的文档,但没有帮助.
https://support.microsoft.com/kb/314853
http://www.infocellar.com/Win98/explorer-switches.htm
使用SO帖子"打开文件夹并选择文件"的答案中描述的代码,我创建了这个函数:
public static void OpenExplorerAndSelectFile(string filePath)
{
Process.Start(
@"explorer.exe",
string.Format(@"/select, ""{0}""", filePath));
}
Run Code Online (Sandbox Code Playgroud)
这个功能运行良好,有一个小问题:
首次为特定文件调用该函数时,Windows资源管理器会正确显示该文件的文件夹,但不会选择该文件.
再次为同一个文件调用相同的函数,它会切换回Windows资源管理器中已打开的文件夹,然后选择该文件.
例如,第一次调用OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")在新的Windows资源管理器窗口中打开文件夹"C:\ MyFolder".第二次调用OpenExplorerAndSelectFile("C:\MyFolder\MyFile.txt")实际上再次激活该窗口并选择MyFile.txt.
在谷歌浏览器中做类似的事情(转到下载页面并显示以前下载的文件)实际上在第一次尝试时效果很好.
所以我的结论是谷歌Chrome似乎与我有点不同.
我的问题:
有没有办法调试/跟踪谷歌Chrome调用的Win32/Shell方法?
然后我会将它们与我所做的比较以查看差异.
有人可以举例说明如何使用来自C#的shell函数SHOpenFolderAndSelectItems吗?我不太懂得如何使用这些函数而无法在pinvoke.net上找到它... = /
说我有三个文件叫
X:\Pictures\a.jpgX:\Pictures\s.jpgX:\Pictures\d.jpg然后我想打开X:\Pictures文件夹a.jpg,s.jpg然后d.jpg选择.