C# 通过上下文菜单获取从选定windows资源管理器文件夹到C的路径
这个练习是从explorers上下文菜单启动一个C程序,程序应该知道打开上下文菜单时上文件夹的路径 我所做的:将我的程序添加到explorers上下文菜单并添加以下代码:C# 通过上下文菜单获取从选定windows资源管理器文件夹到C的路径,c#,contextmenu,explorer,C#,Contextmenu,Explorer,这个练习是从explorers上下文菜单启动一个C程序,程序应该知道打开上下文菜单时上文件夹的路径 我所做的:将我的程序添加到explorers上下文菜单并添加以下代码: SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); string filename; ArrayList windows = new ArrayList(); foreach (SHDocVw.InternetExplorer ie in shel
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows();
string filename;
ArrayList windows = new ArrayList();
foreach (SHDocVw.InternetExplorer ie in shellWindows)
{
filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
if (filename.Equals("explorer"))
{
Console.WriteLine("Hard Drive: {0}", ie.LocationURL);
windows.Add(ie);
Shell shell = new Shell32.Shell();
foreach (SHDocVw.InternetExplorerMedium sw in shell.Windows())
{
Console.WriteLine(sw.LocationURL);
}
}
}
基本上,这确实有效,但仅适用于在资源管理器的左侧树状视图中选择的文件夹。下一个问题是,当我将sw.LocationURL与路径C:\C一起使用时,结果是file:///C:/C%23.
有没有一种更简单的方法来获取文件夹属性Path,即我在其上向c打开上下文菜单的名称 我不能回答你问题的第一部分,因为我还没有研究shell扩展。但是file:///C:/C%23 是目录C:\C的正确Url,已应用Url编码。如果要将此字符串转换为文件系统路径,可以执行以下操作:
var uri = new Uri("file:///C:/C%23");
var path = Uri.LocalPath;
谢谢!!这是解决问题的第一步;