8

可能重复:
与应用程序的文件类型关联 (C#)

我正在编写一个 C# Windows 应用程序来可视化和修改“.build”文件(nant 脚本)。我希望用户能够在 Windows 资源管理器中右键单击 .build 文件并选择“打开方式 >”选项以允许在我的应用程序中修改文件。

为了使用这种机制,我的程序需要支持什么?我的程序可能需要对 Windows 做些什么来启用上下文菜单支持?

我想知道是否有人可以指出我关于这个主题的一篇好文章/教程的方向。

4

2 回答 2

5

打开方式命令只是将文件的路径作为第一个参数传递给应用程序,所以您需要做的就是

public static void Main(string[] args)
{
    if(args[0] != null)
    {
       //args[0] contans a path to the file do whatever you need to do to display it
    }
    else
    {
       //Start normally
    }
}

要自动将您的程序放在 open with 列表中,您需要在HKEY_CLASSES_ROOT\YOUR_EXT\. 这是一个SO答案,说明如何做到这一点

或者您可以以正常方式手动将其添加到 open with 列表中。

于 2010-09-24T15:17:36.603 回答
2

看看这篇博文:Shell Extensions - Context Menu。它有一个简单的“包装器”代码,用于连接到 Windows shell 上下文菜单的一些 COM 挂钩。将它放在 GAC 中,当您右键单击时,您的菜单将作为右键单击上下文菜单的子菜单包含在内。

至于严格使用“打开方式...”来使您的应用程序仅显示它可以打开的文件,这要容易一些。这些由 Windows 使用注册表中两个位置的注册表项进行管理:

  1. HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .FileExtension \ OpenWithList(为当前用户安装)
  2. HKEY_CLASSES_ROOT \ .FileExtension \ OpenWithList(为所有用户安装)

使用 regedit 查看一些现有的,然后使用 Registry 类为您想要的扩展创建一个新键。

于 2010-09-24T15:28:47.373 回答