[英]Get the path from an selected windows explorer folder to C# via context menu
[英]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.