如何将文件路径作为参数传递给自定义右键菜单选项?
解决右键菜单传递文件路径到remove.exe的问题
嘿,这问题其实很容易搞定!你已经完成了右键菜单的添加,现在只需要给菜单选项加上Command配置,让系统把选中文件的路径传递给你的remove.exe就行。
关键步骤:添加Command子键
你需要在创建的Remove菜单子项下面,再创建一个Command子键,并且把它的默认值设置为你的remove.exe路径,再加上Windows系统自带的路径占位符"%1"。
修改后的完整代码示例
using Microsoft.Win32; // 打开*\\Shell项,创建右键菜单根节点 RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey("*\\Shell", true); RegistryKey removeMenuKey = shellKey.CreateSubKey("Remove"); // 设置菜单仅在T盘下显示 removeMenuKey.SetValue("AppliesTo", "under:T:"); // 创建Command子键,配置要执行的程序及参数 RegistryKey commandKey = removeMenuKey.CreateSubKey("Command"); // 替换成你实际的remove.exe路径,"%1"会被系统替换为选中文件的完整路径 commandKey.SetValue("", @"C:\Your\Actual\Path\remove.exe ""%1""");
细节说明
"%1"是Windows右键菜单的标准占位符:当你右键点击单个文件时,系统会自动把该文件的完整路径替换这个占位符,作为命令行参数传递给remove.exe。- 给
%1加上双引号很重要:如果文件路径包含空格(比如D:\My Files\test.txt),双引号能确保整个路径被当作一个完整的参数传递,避免程序解析出错。 - 如果需要支持多选文件:可以把占位符换成
"%*",这样系统会把所有选中文件的路径作为单独的命令行参数传递给你的程序,你可以在remove.exe里通过命令行参数数组来接收这些路径。
内容的提问来源于stack exchange,提问作者Vishal Gaikwad
相关产品推荐
相关产品推荐

