因此,我搜索了如何使用 C# 对应用程序进行 shell 集成(将其添加到右键菜单)的指南,但我找不到如何仅针对特定文件类型执行此操作。我知道这是可能的,因为 WinRar 就是这样做的。那么我该怎么做呢?
通常有两种方法可以实现这一点。
注册表项 - 您可以在 HKEY_CLASSES_ROOT 下写入键和值。如果您查看该配置单元,您会在您的电脑上看到扩展。看这个article http://msdn.microsoft.com/en-us/library/cc144175%28v=vs.85%29.aspx有关键和值的详细信息。一些简单的事情,例如打开选项.myfile
在这里可以输入您的应用程序的类型。这里有一个文件关联示例 http://msdn.microsoft.com/en-us/library/cc144158%28v=vs.85%29.aspx
Shell 扩展(用 COM 编写):在这里你可以做更复杂的事情,比如处理程序。 http://msdn.microsoft.com/en-us/library/cc144067%28v=vs.85%29.aspx它们将被 Windows 调用,以便您可以执行诸如在菜单上绘画之类的操作,或者在右键单击文件时添加自定义操作。这里不仅仅是文件,您甚至可以添加属性表和自定义工具提示。
你会发现一些talk http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx关于不使用 .NET 编写 Shell 处理程序**。这仅适用于older.NET 的版本。.NET4 一切正常。 http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
这篇文章应该可以帮助你.NET4 中的上下文菜单处理程序 http://blogs.msdn.com/b/codefx/archive/2010/09/14/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-1.aspx
** Why was它不推荐:
当您编写 shell 处理程序时,它会被主机进程(通常是 Windows 资源管理器)调用,而且还会被 FileOpenDialogs 和 FolderBrowser 对话框之类的东西调用。因此,如果您在 .NET 2.0 中编写了一个 shell 扩展,并且一个 .NET 1.1 应用程序调用了“文件打开对话框”,然后您的 .NET 2.0 shell 处理程序将被调用,并且您的 .NET 1.1 应用程序具有较旧的 CLR,则会出现问题并且会出现版本冲突。
所以我很高兴最终发现这个问题已经在 .NET 4 中以某种方式修复了 =)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)