我找到了一个非常好的教程,我试图理解本教程中没有的东西(因为tut本身工作正常) http://www.codeproject.com/Articles/9163/File-Rating-a-practical-example-of-shell-extension
当您查看WinRar,TortoiseSVN,Antivirus-apps等应用程序时,Shell扩展项旁边会有一个图标。
我想知道这是怎么做到的。 (以编程方式使用C#)
添加分隔符有效,添加子菜单工作和点击+动作也有效,但我正在努力使用该图标。这可不是那么难。有人可以帮帮我吗?
请不要说Microsoft在.NET 4.0中不再支持此功能,因为它不能保证,因此它们不提供样本代码。如果所有其他应用都能做到,那么就有可能。
请提供一些示例代码,一些教程或者甚至是一段代码。
答案 0 :(得分:2)
请查看以下文章,它使用.NET 4.0来使用SharpShell nuget包创建Windows Shell Extensions。
NET Shell Extensions - Shell Context Menus
使用此库,您可以在创建contextmenustrip时直接设置图像,如下所示
protected override ContextMenuStrip CreateMenu()
{
// Create the menu strip.
var menu = new ContextMenuStrip();
// Create a 'count lines' item.
var itemCountLines = new ToolStripMenuItem
{
Text = "Count Lines...",
Image = Properties.Resources.CountLines
};
// When we click, we'll count the lines.
itemCountLines.Click += (sender, args) => CountLines();
// Add the item to the context menu.
menu.Items.Add(itemCountLines);
// Return the menu.
return menu;
}
答案 1 :(得分:2)
您只需要添加到以下注册表项:HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes * \ shellex \ ContextMenuHandlers 这是代码:
string TimeStamp = DateTime.Now.ToString("dd-MM-yyyy");
string key = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\*\\shellex\\ContextMenuHandlers\\Winrar";
string valueName = "MyWinrar";
Microsoft.Win32.Registry.SetValue(key, valueName, HERE WHAT YOU WANT TO START, Microsoft.Win32.RegistryValueKind.String);
我希望它适合你!
答案 2 :(得分:0)
您列出的所有应用都使用COM和非托管代码来创建叠加图标处理程序。甚至还有一个特殊项目TortoiseOverlays为TortoiceCSV,TortoiseSVN和TortoiseGIT提供了一个用于绘制图标的通用库。您可以查看它的源代码,了解它是如何完成的。如果你想绘制类似的图标,你应该只是重复使用它。
不建议在此类扩展中使用.Net,因为当针对不同.Net版本构建的多个扩展会尝试加载资源管理器进程时,它们会使资源管理器崩溃。