一、原理
关联自己的应用程序到右键菜单中,当用户在“我的电脑”或“资源管理器”中的某一文件上单击鼠标右键时会出现一个快捷菜单。
假设用户希望在txt文件类型的右键快捷菜单中关联上自己的应用程序 (用户的应用程序名为 txtapp.exe,在D盘根目录下) ,步骤如下:
1、在注册表中找到并打开 HKEY_CLASSES_ROOT\.txt子键,查到其默认键值项数据为“txtfile”。
2、在注册表中找到并打开 HKEY_CLASSES_ROOT\txtfile子键,在该子键的shell子键中添加一个“新添加文本应用程序”子键,并将该子键的默认键值项数据设为“用测试程序打开”。
“用测试程序打开””将作为新添加菜单项的名字出现在右键菜单中。
3、在 HKEY_CLASSES_ROOT\txtfile\shell\我的文本应用程序 子键中添加一个command子键,并将command子键的默认键值项数据设为“d:\txtapp.exe %1”。
此处设置的数据是在快捷菜单中选中相应的菜单项时执行的程序,%1表示应用程序启动时自动将当前文件装入。
二、代码
HKEY hresult;
CString str1,str2;
long result;
DWORD dwPos;
LPCTSTR dataset1=_T("txtfile\\shell\\新添加文本应用程序"); //若针对所有文件,将txtfile 改为 AllFilesystemObjects
LPCTSTR dataset2=_T("txtfile\\shell\\新添加文本应用程序\\command");
str1=_T("用测试程序打开");
str2=_T("d:\\txtapp.exe %1");
//创建“新添加文本应用程序”子键
result =RegCreateKeyEx(HKEY_CLASSES_ROOT,
dataset1,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,
NULL,
&hresult,
&dwPos);
//将该子键的“默认”数据项的数据设置为“用测试程序打开”
result =RegSetValueEx(hresult,
NULL,
0,
REG_SZ,
(const BYTE*)(LPCTSTR)str1,
str1.GetLength()*2); //Unicode到ASCII是2倍的关系
//创建“command”子键
result =RegCreateKeyEx(HKEY_CLASSES_ROOT,
dataset2,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,
NULL,
&hresult,
&dwPos);
//将该子键的“默认”数据项的数据设置为用户应用程序的路径
result =RegSetValueEx(hresult,
NULL,
0,
REG_SZ,
(const BYTE*)(LPCTSTR)str2,
str2.GetLength()*2);
::RegCloseKey(hresult);
用Visual Studio .Net 2003制作安装程序时轻松实现将自己的程序添加到系统的鼠标右键菜单
(作者:唐洪法 2003-11-28)
有的时候我们需要将自己的程序添加到系统的右键菜单里,以方便用户启动我们的程序。如下图,把我自己制作的“我的资源管理器”加到了系统的右键菜单中。
实现原理:在程序被安装时,修改用户的注册表,将自己的栏目添加到系统菜单中。
当用Visual Studio .NET 2003来制作安装程序时,要实现这个功能就非常非常的简单。下面是具体的制作步骤:
1. 先给你的工程添加一个“安装项目”。
怎么添加安装项目,具体的就不说了,在帮助文档里有很好的说明。
2. 在“解决方案资源管理器”中,右单击你的安装项目,在弹出菜单中选择“视图”->“注册表”项;如图:
3. 单击“注册表”进入注册表修改视图。
4. 在左边的“目标计算机上的注册表”栏目右单击“HKEY_CLASSES_ROOT”,在弹出菜单中选择“新建Key”,命名为“*”。
5. 右单击“*”,在弹出菜单中选择“新建”->“项”,这里的命名随便你自己选择。比如“MyApp”。
6. 右单击“MyApp”,在弹出菜单中选择“新建”->“字符串值”。这时在右边的窗口中会出现新添的项。将系统自动给的名字删掉(可单击右键,在弹出菜单中选择“删除”),然后按回车,这时,名称会自动改为“(默认值)”。这一步很重要!
7. 右单击“(默认值)”,在“属性”视图中找到”value”这一栏,键入“我的资源管理器”。
8. 右单击“MyApp”,在弹出菜单中选择“新建”->“项”,命名为“command”。
9. 右单击“command”,在弹出菜单中选择“新建”->“字符串值”。然后跟刚才的步骤一样,将其名称改为“(默认值)”。再在属性栏中将他的“value”属性设置为“[TARGETDIR][ProductName]”。大家一看就知道了拉,就是把他的值设置为你的程序在目标计算机上的位置。这也是非常重要的。
10. 最后,为了让程序在卸载的时候能把我们在注册表里添加的信息删掉,别忘了将“MyApp”的属性中“DeleterAtUninstall”属性置为“true”
好了,大功告成了!把你的安装项目生成一下,然后自己安装一下试试,肯定没有问题了!
我们实现的这个是当你右单击文件时出现的弹出菜单中添加了我们自己的程序链接,如果想实现针对文件夹的,或者是特定文件的,方法都类似,只是修改的注册表的位置不同。大家自己摸索着试试吧!很好玩的!