我想在Windows资源管理器上下文菜单中为所有“jpg”文件添加一个上下文菜单项。当用户点击它时,上下文菜单项的名称将为“process JPEG”,将调用一个主可执行文件。问题是我已经创建了主要的c#可执行文件,它不能仅通过上下文菜单运行它可以独立运行。我想传递用户选择的文件名或文件名,并单击上下文菜单命令和主菜单可执行文件,以便主可执行文件将能够使用某些方法获取文件并处理那些文件。我已经完成了以下内容以集成上下文菜单 - 请帮帮我
public static void Register(
string fileType, string shellKeyName,
string menuText, string menuCommand)
{
Debug.Assert(!string.IsNullOrEmpty(fileType) &&
!string.IsNullOrEmpty(shellKeyName) &&
!string.IsNullOrEmpty(menuText) &&
!string.IsNullOrEmpty(menuCommand));
// create full path to registry location
string regPath = string.Format(@"{0}\shell\{1}", fileType, shellKeyName);
// add context menu to the registry
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(regPath))
{
key.SetValue(null, menuText);
}
// add command that is invoked to the registry
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(
string.Format(@"{0}\command", regPath)))
{
key.SetValue(null, menuCommand);
}
}
答案 0 :(得分:0)
要在旧版Windows上为file type注册动词,您需要:
HKCR\.jpg
下的默认值(这通常会为您提供jpgfile
)HKCR\%ProgId%\shell\%YourVerb%\command
从XP开始,您可以在SystemFileAssociations下注册补充动词,而无需控制ProgID:
HKCR\SystemFileAssociations\.jpg\shell\%YourVerb%\command
动词命令通常为"c:\full\path\to\yourapp.exe" "%1"
,%1由Windows替换为文件名。您的应用程序必须解析命令行。
要正确支持同时打开多个文件,最好使用DDE or IDropTarget(或Win7 +上的IExecuteCommand)