因此,我搜索了如何将您的应用程序(将其添加到右键菜单)与 C# 集成的指南,但我找不到仅针对特定文件类型的方法。我知道这是可能的,因为 WinRar 做到了。那么我该怎么做呢?
2 回答
通常有两种方式可以实现这一点。
注册表键 - 您可以在 HKEY_CLASSES_ROOT 下写入键和值。如果您查看那个蜂巢,您会在您的电脑上看到扩展。有关键和值的详细信息,请参阅本文。在这里可以使用一些简单的东西,例如使用您的应用程序打开
.myfile
类型的选项。这是一个文件关联示例Shell Extensions (Written in COM) :在这里你可以做更复杂的事情,比如处理程序。它们将被 Windows 调用,因此您可以执行诸如在菜单上绘制之类的操作,或者在右键单击文件时添加自定义操作。这里除了文件之外还有更多内容,您甚至可以添加属性表和自定义工具提示。
您会发现一些关于不使用 .NET 编写 Shell Handler** 的讨论。这仅适用于旧版本的 .NET。.NET4 一切正常。
本文应该可以帮助您使用.NET4 中的上下文菜单处理程序
** 为什么不推荐:
当您编写外壳处理程序时,它会被主机进程(通常是 Windows 资源管理器)调用,但也会被 FileOpenDialogs 和 FolderBrowser 对话框调用。因此,如果您在 .NET 2.0 中编写了一个 shell 扩展,并且一个名为 File Open Dialog 的 .NET 1.1 应用程序,然后您的 .NET 2.0 shell 处理程序将被调用,并且您的 .NET 1.1 应用程序具有较旧的 CLR,则会出现问题并且会有版本冲突。
所以我很高兴最终发现这已在 .NET 4 中以某种方式修复 =)
Windows 资源管理器右键菜单由注册表控制。具体来说,HKEY_CLASSES_ROOT 配置单元。
了解其中一切如何运作的一个好方法是检查HKCR\.txt
右键菜单中的文本文件会发生什么。查看(默认)键,它指向“txtfile”。 HKCR\txtfile
然后将有一个子项HKCR\txtfile\shell\open\comman
d。(默认)键显示打开notepad.exe的命令,参数为“%1”,表示正在打开的文件。用其他名称替换 open 键(请参阅 txtfile 键中的 print 和 printto 键)以将不同的自定义命令添加到右键单击菜单。
一旦掌握了集成应用程序所需添加的内容,就可以查看Microsoft.Win32 命名空间中的类,以帮助通过 c# 代码操作注册表。