繁体   English   中英

通过上下文菜单获取从选定的Windows资源管理器文件夹到C#的路径

[英]Get the path from an selected windows explorer folder to C# via context menu

练习是从资源管理器的上下文菜单启动C#程序,程序应知道上下文菜单中的文件夹路径已打开。

我所做的事情:将我的程序添加到资源管理器上下文菜单中,并添加以下代码:

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”。

是否有一种更简单的方法来获取我在C#中打开上下文菜单的文件夹属性(路径,名称)?

我无法说出您问题的第一部分,因为我还没有考虑过shell扩展。 但是file:///C:/C%23是目录C:\\C#的正确Url,并且应用了urlencoding。 如果要将此字符串转换为文件系统路径,则可以执行以下操作:

var uri = new Uri("file:///C:/C%23");
var path = Uri.LocalPath;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM