使用 ShellSharp
當你需要多級選單時,SharpShell 可以通過多個引數進行救援。 https://github.com/dwmkerr/sharpshell 有很多例子,即使對於單級到多級自定義上下文選單也是如此。
關鍵是要建立具有屬性[ComVisible(true)
]和[COMServerAssociation(AssociationType.AllFiles)
]的類,並繼承實現 CanShowMenu 和 CreateMenu 函式的 fromSharpContextMenu 類,你需要通過 Sharpshell 建立者推薦的 regasm 工具或 ServerRegistrationManager 註冊程式集。
[ComVisible(true)]
[COMServerAssociation(AssociationType.AllFiles)]
public class AdvancedContextMenu : SharpContextMenu
{
protected override bool CanShowMenu()
{
// We can show the item only for a single selection.
}
protected override ContextMenuStrip CreateMenu()
{
// Create the menu strip.
var menu = new ContextMenuStrip();
... add any level of ToolStripMenuItems and add them to menu
return menu
}
}
更多細節可以在 https://github.com/dwmkerr 和 http://www.codeproject.com/Articles/512956/NET-Shell-Extensions-Shell-Context-Menus 獲得。