繁体   English   中英

c#从上下文菜单Windows资源管理器中的选定文件/文件夹中检索文件/文件夹路径

[英]c# retrieve file/folder path from selected file/folder in Context Menu Windows Explorer

我正在尝试在Windows资源管理器的上下文菜单中为任何文件和任何文件夹实现一个选项。 我已经通过写regedit来实现这一点。

Using Microsoft.Win32;
...
RegistryKey key;
// Register to any file
key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\CLASSES\*\shell\MyProject");
key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\CLASSES\*\shell\MyProject\command");
// Register to folder
key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\CLASSES\Folder\shell\MyProject");
key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\CLASSES\Folder\shell\MyProject\command");
// Default value points to the app
key.SetValue("", Application.StartupPath + @"\MyProject.exe");
key.Close();

该应用程序将按我的意愿打开,但是我不知道如何获取上下文菜单中选择的文件/文件夹的路径。 我怎样才能做到这一点?

将注册表项的值更改为

key.SetValue("", Application.StartupPath + @"\MyProject.exe %1");

因此%1被替换为选定的文件/文件夹。 在您的主要方法中,您可以通过以下方式访问此方法:

static void Main(string[] args)
{
    Console.WriteLine("Selected file/folder: {0}", args[0]);
}

不幸的是,这不适用于多选。 放置%2等是没有用的。 如果选择了多个文件或文件夹,则将分别为您的应用程序分别调用它们。

RenéVogt的答案只有这一行:

key.SetValue("", Application.StartupPath + @"\MyProject.exe %1");

应该:

key.SetValue("", Application.StartupPath + @"\MyProject.exe \"%1\"");

如果目录或文件路径包含空格, args[]带引号的args[]数组将包含多个字符串。

暂无
暂无

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

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