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

标签 c# windows shell contextmenu 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 等是没有用的。如果选择了多个文件或文件夹,则会分别为每个文件或文件夹调用您的应用程序。

关于C#从上下文菜单Windows资源管理器中选定的文件/文件夹中检索文件/文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34381304/

相关文章:

c# - .NET MVC : Restrict action based on Role level

python - Anaconda 包错误,启动 Sublime Text-3

windows - == 和 EQU 运算符之间的区别?

c# - 绑定(bind) Observable 集合上的 GeneratorPosition 错误

c# - Visual Studio : Debugging a referenced DLL, 我在另一个 SLN 中有源代码

windows - Skype & Terminal Services 信息交换?

shell - 如何将结果从 shell 脚本保存在 excel 中的单独列中?

shell - 如何防止并行向我的命令添加额外的转义?

linux - 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

c# - 在不登录的情况下获取 Intranet 上 Web 应用程序的域\用户名