请看下面的“C++实现添加桌面右键新建菜单”的完整攻略。
一、方案概述
添加桌面右键新建菜单主要通过在注册表中添加相应键值来实现。当用户在桌面右键点击新建时,系统就会在注册表中找到相应的键值,展示出新增的菜单。
二、实现步骤
1. 创建注册表键值
我们需要在如下路径创建一个KEY,用于存放新增的菜单项的信息:
HKEY_CLASSES_ROOT\Directory\Background\shell
具体步骤如下:
- 使用 RegOpenKeyEx 函数打开
HKEY_CLASSES_ROOT\Directory\Background\shell
键 - 使用 RegCreateKeyEx 函数在
shell
键下创建子键,键名为你希望在右键菜单中显示的名称 - 在新建的子键中创建
command
子键,键值为你想要执行的程序路径
示例代码:
HKEY hKey;
LONG lRet = RegOpenKeyEx(HKEY_CLASSES_ROOT, _T("Directory\\Background\\shell"), 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS)
{
// 添加右键菜单项,例如“TestMenu”
HKEY hSubMenuKey;
lRet = RegCreateKeyEx(hKey, _T("TestMenu"), 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hSubMenuKey, NULL);
if (lRet == ERROR_SUCCESS)
{
// 添加要执行的命令,比如添加notepad.exe
HKEY hCommandKey;
lRet = RegCreateKeyEx(hSubMenuKey, _T("command"), 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hCommandKey, NULL);
if (lRet == ERROR_SUCCESS)
{
TCHAR szCmd[MAX_PATH] = { 0 };
_stprintf(szCmd, _T("\"%s\""), _T("notepad.exe"));
lRet = RegSetValueEx(hCommandKey, NULL, 0, REG_SZ, (BYTE*)szCmd, (_tcslen(szCmd) + 1) * sizeof(TCHAR));
RegCloseKey(hCommandKey);
}
RegCloseKey(hSubMenuKey);
}
RegCloseKey(hKey);
}
2. 刷新资源管理器
注册表的修改需要刷新资源管理器才能生效,所以我们需要向系统发出更新 shell32.dll 的命令,刷新资源管理器。
示例代码:
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
三、总结
这样,我们就可以通过在注册表中添加相应键值,实现在桌面右键菜单中添加自定义的菜单项了。
四、示例说明
下面是两个示例,分别讲解如何添加常用的文本编辑器 Sublime Text 和 VSCode 到右键新建菜单中。
示例1:添加 Sublime Text
要实现将 Sublime Text 添加到右键新建菜单中,可以按照如下步骤操作:
- 在注册表中创建新的键值
HKEY_CLASSES_ROOT\Directory\Background\shell\SublimeText\command
- 设置键值
"C:\Program Files\Sublime Text 3\sublime_text.exe" "%V"
- 使用上述示例代码,将 Sublime Text 添加到右键新建菜单中。
示例2:添加 VSCode
要实现将 VSCode 添加到右键新建菜单中,可以按照如下步骤操作:
- 在注册表中创建新的键值
HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode\command
- 设置键值
"C:\Program Files\Microsoft VS Code\Code.exe" "%V"
- 使用上述示例代码,将 VSCode 添加到右键新建菜单中。
这样,我们就可以通过以上操作实现在右键菜单中添加 Sublime Text 和 VSCode 了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现添加桌面右键新建菜单 - Python技术站