C++实现添加桌面右键新建菜单

请看下面的“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 添加到右键新建菜单中,可以按照如下步骤操作:

  1. 在注册表中创建新的键值

HKEY_CLASSES_ROOT\Directory\Background\shell\SublimeText\command

  1. 设置键值

"C:\Program Files\Sublime Text 3\sublime_text.exe" "%V"

  1. 使用上述示例代码,将 Sublime Text 添加到右键新建菜单中。

示例2:添加 VSCode

要实现将 VSCode 添加到右键新建菜单中,可以按照如下步骤操作:

  1. 在注册表中创建新的键值

HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode\command

  1. 设置键值

"C:\Program Files\Microsoft VS Code\Code.exe" "%V"

  1. 使用上述示例代码,将 VSCode 添加到右键新建菜单中。

这样,我们就可以通过以上操作实现在右键菜单中添加 Sublime Text 和 VSCode 了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现添加桌面右键新建菜单 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • arcgisearth(原谷歌地球)如何获取高精度矢量地图数据?

    ArcGIS Earth获取高精度矢量地图数据攻略 ArcGIS Earth是一款功能强大的三维地球浏览器,可以用于浏览、分析和共享地理空间数据。本攻略将介如何使用ArcGIS Earth获取精度矢量地图数据。 步骤1:选择数据源 ArcGIS Earth支持多种数据源,包括Arc Online、ArcGIS Enterprise、W、WMTS等。在获取高精…

    other 2023年5月7日
    00
  • 关于Python作用域自学总结

    关于Python作用域自学总结攻略 什么是作用域? 在Python中,作用域是指变量的可访问性和可见性的范围。Python中有三种作用域:全局作用域、局部作用域和内建作用域。 全局作用域:在整个程序中都可访问的变量,定义在函数外部。 局部作用域:只在函数内部可访问的变量,定义在函数内部。 内建作用域:Python内置的函数和变量,如print()和len()…

    other 2023年8月19日
    00
  • element-ui自定义message-box自定义样式不生效的解决

    Element-UI自定义MessageBox自定义样式不生效的解决攻略 问题描述 在使用Element-UI框架进行前端开发时,可能会遇到自定义MessageBox样式不生效的问题。本攻略将详细解释如何解决这个问题。 解决步骤 以下是解决element-ui自定义MessageBox自定义样式不生效的具体步骤: 步骤 1:引入自定义样式文件 首先,创建一个…

    other 2023年6月28日
    00
  • iPhone升级到ios8.0.2无限重启怎么办?如何解决?

    iPhone升级到ios8.0.2无限重启怎么办?如何解决? 在更新到iOS 8.0.2版本的过程中,有些iPhone用户遇到了设备无限重启的问题。在这种情况下,应该采取以下措施来解决。 方法一:恢复设备 使用 USB 线连接您的 iPhone 到电脑上,并打开 iTunes。 在 iTunes 中,选择您的设备,然后点击“还原”。 在还原设备之前,您可以选…

    other 2023年6月27日
    00
  • tkinter布局之pack

    tkinter布局之pack 在使用Tkinter创建GUI应用程序时,布局是必不可少的一部分。布局确定了应用程序中控件的位置和大小。Tkinter提供三种布局管理器:pack、grid和place,本文主要讲解pack布局。 pack布局概述 pack布局是一种自适应布局,它根据控件的大小和容器的大小来调整控件的位置。pack布局按照添加顺序依次将控件放置…

    其他 2023年3月28日
    00
  • java实现点击按钮事件弹出子窗口

    下面是Java实现点击按钮事件弹出子窗口的完整攻略: 步骤一:准备工作 在Java中实现点击按钮事件弹出子窗口,首先需要进行一些准备工作,包括创建主窗口和子窗口等。 1.1 创建主窗口 可以使用Swing库中的JFrame类来创建一个主窗口,示例代码如下: import javax.swing.*; public class MainFrame extend…

    other 2023年6月26日
    00
  • jenkins运行python脚本

    Jenkins运行Python脚本 Jenkins是一款流行的持续集成和持续部署工具,可以自动构建、测试和部署你的应用程序。它支持多种编程语言和技术,并且扩展性非常强,可以通过插件来适应不同的场景和需求。在本文中,我们将介绍如何使用Jenkins来运行Python脚本。 准备工作 在开始之前,需要准备以下工具和环境: 安装Jenkins服务器; 安装Pyth…

    其他 2023年3月28日
    00
  • 用debug实现dos下重启的代码

    使用debug实现DOS下重启的代码,可以分为以下几个步骤: 打开debug: 在DOS环境下打开命令行窗口,输入命令“debug”打开debug工具。 输入汇编语言指令: 在debug工具中,可以输入汇编语言指令来操作计算机系统,具体实现如下: 第1条指令:MOV AH,0x00 这条指令将0x00赋值给AX寄存器的高8位AH,表示将控制台中断同时存储在A…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部