一、需求:
1、在window系统的右键菜单中添加一个exe功能项、达到启动exe效果。
2、在选择文件时可以将被选中文件路径信息作为exe的启动参数
二、实现机制:
功能实现需要利用win系统现有的注册表和自己实现参数获取、功能实现。
1、查阅资料、总结win系统可以在注册表中实现右键菜单item的添加、只需要遵循相关规范即可以实现右键添加、启动。
2、注册表可以将数据传递给exe、exe需要调用API获取到所需数据。
三、具体实现
1、注册表添加item
本次实现是在iss脚本中、其脚本语言支持对win系统注册表操作。需要明确操作宏,
此处简单介绍应用、更多内容需要自己百度查询。
[Registry]
Root: HKCR; Subkey: "路径名称"; ValueType: string; ValueName: "itme名称"; ValueData: "带参数据"; Flags:标识
**举例:在HKCP下的*\shell路径下添加自己的程序A、所需要的带参类型为字符串类型。**
HKCR:是HKEY_CLASSES_ROOT的简称,即win系统注册表。
Subkey:是要操作的路径、即在某个路径下创建*\shel\A。
ValueType、ValueName、ValueData是在当前项下创建什么类型的注册表项、名字叫什么、参数是啥。
win的参数分为字符串和char*、char*遇到空格截断、需要额外注意。建议使用字符串形式。
![在这里插入图片描述](https://img-blog.csdnimg.cn/b572d814d89943e295506d4005bddb41.png#pic_center)
2、参数获取
int main(int argc, char *argv[]){
QStringList argun = QCoreApplication::arguments();
QString qstrValue = argun.at();
}
这个地方注意、如果注册表里获取带参的表示使用的为 %1,则此处获取的数据为不完整数据、例如将文件拷贝、产生的副本中带有空格、此处获取的路径数据是副本文件路径第一个空格前得数据。建议注册表中使用字符串获取