我需要我的应用程序来创建右键单击上下文菜单项(和子菜单项)。我不关心代码 - 但我不知道如何在注册表中创建子菜单项。它不像人们期望的那样符合逻辑。
我已经无数次搜索过,现在正式放弃搜索。
我知道我们可以使用regedit.exe创建一个上下文菜单项,方法是转到shell键并添加一个新的但是如何创建像7zip这样的子菜单项?
答案 0 :(得分:2)
查看此Code-Project文章:Add a context menu to the Windows Explorer。使用.net框架提供的Registry
类似乎非常容易。
一些更高级/更好的解决方案似乎正在使用某些库,例如:SharpShell
修改强>
请查看:.NET Shell Extensions - Adding submenus to Shell 。
这部分应该解决你的问题:
// <summary>
// Creates the context menu when the selected item is a folder.
// </summary>
protected void MenuDirectory()
{
ToolStripMenuItem MainMenu;
MainMenu = new ToolStripMenuItem
{
Text = "MenuDirectory",
Image = Properties.Resources.Folder_icon
};
ToolStripMenuItem SubMenu1;
SubMenu1 = new ToolStripMenuItem
{
Text = "DirSubMenu1",
Image = Properties.Resources.Folder_icon
};
var SubMenu2 = new ToolStripMenuItem
{
Text = "DirSubMenu2",
Image = Properties.Resources.Folder_icon
};
SubMenu2.DropDownItems.Clear();
SubMenu2.Click += (sender, args) => ShowItemName();
var SubSubMenu1 = new ToolStripMenuItem
{
Text = "DirSubSubMenu1",
Image = Properties.Resources.Folder_icon
};
SubSubMenu1.Click += (sender, args) => ShowItemName();
// Let's attach the submenus to the main menu
SubMenu1.DropDownItems.Add(SubSubMenu1);
MainMenu.DropDownItems.Add(SubMenu1);
MainMenu.DropDownItems.Add(SubMenu2);
menu.Items.Clear();
menu.Items.Add(MainMenu);
}
答案 1 :(得分:0)
您必须创建一个命令文件夹,例如 Archive,有两个命令:A 和 B。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Archive]
"MUIVerb"="Archive"
"SubCommands"="Windows.A;Windows.B"
键中的 * 表示在任何文件上单击鼠标右键都会显示此菜单。如果您只需要 *.7z 文件,请使用 HKEY_CLASSES_ROOT\.7z\shell\Archive。 MUIVerb 的值将是菜单项的名称。如果您将 MUIVerb 命名为 7-Zip,则右键菜单将包含两个 7-Zip 项目。
然后在那里创建命令:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.A]
"MUIVerb"="Command name of A"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.A\command]
@="notepad.exe \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.B]
"MUIVerb"="Command name of B"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.B\command]
@="notepad.exe \"%1\""
在这个例子中,你得到一个存档菜单项,有级联的两个命令,用记事本打开当前文件。它适用于 Windows 7 和更新版本。