C# 如何将我的应用程序插入Windows右键单击菜单?

C# 如何将我的应用程序插入Windows右键单击菜单?,c#,.net,windows-xp,C#,.net,Windows Xp,我想写一个C.NET程序,对选定的图像进行一些转换。 在我的桌面或任何其他windows文件夹中选择几个图像并右键单击它们后,我希望在出现的菜单中看到我的程序。 如何将程序插入此菜单,并在单击此选项时执行它? 我希望有一个小的代码示例 提前谢谢 最简单的方法不是通过代码,而是通过注册表项。在HKCR/filetype/Shell下添加一个键,其中filetype是与文件扩展名关联的文件类型,例如jpegfile。该键的名称是您的菜单选项,例如转换。在该命令下,创建一个名为Command的键,并将

我想写一个C.NET程序,对选定的图像进行一些转换。 在我的桌面或任何其他windows文件夹中选择几个图像并右键单击它们后,我希望在出现的菜单中看到我的程序。 如何将程序插入此菜单,并在单击此选项时执行它? 我希望有一个小的代码示例


提前谢谢

最简单的方法不是通过代码,而是通过注册表项。在HKCR/filetype/Shell下添加一个键,其中filetype是与文件扩展名关联的文件类型,例如jpegfile。该键的名称是您的菜单选项,例如转换。在该命令下,创建一个名为Command的键,并将该键的值设置为程序的命令行,例如c:\myprogram\myprogram.exe%1,此时资源管理器将替换右键单击文件的文件名。

实际上,我希望每次运行程序时,转换选项会自动添加到菜单中,并且我将在启动时运行程序。我不想每次把程序放在另一台计算机上时都进入注册表并对其进行编辑。我仍然会使用注册表方法:在程序启动时,检查是否存在注册表项,如果还没有,则插入注册表项。您可以使用Microsoft.Win32.RegistryXxx类来执行此操作。我不知道是否有API可以临时向上下文菜单添加条目,或者在显示上下文菜单时在单独的进程中获取回调以拦截/修改。我相信您可以从shell扩展执行此操作,但是您需要将扩展加载到资源管理器中,这通常是一个注册表设置!。抱歉。好的,我知道如何向注册表添加项。但是,我仍然无法理解程序的流程。假设我将我的程序添加到Windows的启动程序中。Windows启动时,我的程序将启动并向注册表添加一个键。我的第一个问题是命令键的值应该是什么?应该是另一个程序来转换图像吗?或者它可能与我的程序相同?我的第二个问题是:当选择几个文件时,如何将它们的名称传递给转换程序?非常感谢您抽出时间!命令键的值应该是用户选择“变换”菜单项时要运行的命令行。这肯定与您的程序相同,但不会忘记%1占位符!。这将启动一个新的程序实例:如果不需要,可以使用普通的单实例技术将新的程序实例移交给现有实例。我不确定多个文件的行为:我认为命令中指定的程序是分别为每个文件运行的,但我建议做一个快速测试以确保。嗯,我想最简单的方法是运行另一个进行转换的程序。谢谢