一、目的:演示如何应用VS打包应用程序成系统右键菜单,当点击系统右键菜单时可以自动调用当前程序
(类似于SVN右键菜单进行Commit、Update、上传到百度云、添加至压缩包等菜单操作)
二、环境:VS2019
三、示例:在系统右键菜单中增加一个菜单项”我的方式打开“,当点击”我的方式打开“时,调用exe接收当前选择的文件进行判断是否立即打开;
说明:
1、在安装包前,点击文件右键没有”我的方式打开“菜单按钮
2、运行安装包后,点击右键菜单,出现了”我的方式打开按钮“
3、当点击该按钮时,会弹出应用程序写好的逻辑对话框,提示是否用当前默认程序打开
应用程序中代码如下:
public partial class App : System.Windows.Application
{
protected override void OnStartup(StartupEventArgs e)
{
if (e.Args != null && e.Args.Count() > 0)
{
foreach (var item in e.Args)
{
var result = MessageBox.Show(item, "是否用默认程序打开?", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
Process.Start(item);
}
}
}
else
{
MessageBox.Show("没有识别到任何参数!");
this.Shutdown();
}
base.OnStartup(e);
}
}
四、步骤:
1、新建应用程序,设置代码如上图
2、新建打包程序
右键解决方案 - 添加 - 新建项目 -Setup Project
注:如果没有Setup Project项目,请先安装VS2019打包项目,这里不做介绍
3、添加注册表配置,如下图添加注册表
说明:右键点击打包项目 - View - 注册表
4、添加到系统右键注册表,如下图
说明:右键注册表目录为,HKEY_CLASSES_ROOT\*\shell
没有该目录按该目录建立即可,之后在该目录下创建”我的方式打开“(右键菜单显示的名称),再创建command目录,添加字符串值,Value值如下:
[ProgramFilesFolder][Manufacturer]\[ProductName]\HeBianGu.Package.Application.RegistryRightMenu.exe %1
这个目录表示当前安装的文件exe生成的位置,右键菜单中此值表示当点击右键默认打开的exe路径,而参数%1即表示当前右键选中的文件名全路径,只需要再应用程序中接受这个参数即可,接受参数方式如下:
protected override void OnStartup(StartupEventArgs e)
{
if (e.Args != null && e.Args.Count() > 0)
{
foreach (var item in e.Args)
{
var result = MessageBox.Show(item, "是否用默认程序打开?", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
Process.Start(item);
}
}
}
else
{
MessageBox.Show("没有识别到任何参数!");
this.Shutdown();
}
base.OnStartup(e);
}
通过以上4个步骤即可配置好打包带有右键的菜单项,同时点击该项调用当前打包的应用程序,通过此方式可以构造类似于”上传到百度云、360强力删除、添加到压缩包、SVN提交“等等功能,同时卸载后该注册表项也会自动卸载
(其他子菜单、菜单图标等功能的时间后续更新)
源代码:https://github.com/HeBianGu/Package-Demo.git