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

yizhihongxing

请看下面的“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日

相关文章

  • 带你深入了解java-代理机制

    带你深入了解 Java 代理机制 代理机制是 Java 语言的一个重要特性,它允许我们在运行时生成一个替代某个对象的对象,从而能够控制访问、修改被代理对象的属性或方法。在本文中,我们将深入讲解 Java 的代理机制,包括代理类型、创建方式、使用场景等。 代理类型 Java 语言中有两种代理类型:静态代理和动态代理。 静态代理 静态代理是指在编译时确定代理类和…

    other 2023年6月26日
    00
  • 找回MySQL管理员root密码的3个妙招

    为了找回MySQL管理员root密码,有以下3个妙招可供选择: 妙招一:使用配置文件重置密码 停止MySQL服务: sudo systemctl stop mysqld 创建一个文件 mysqld.cnf,并添加以下内容: [mysql] user=root pid-file=/var/run/mysqld/mysqld.pid skip-grant-tab…

    other 2023年6月27日
    00
  • Java Native关键字原理及作用解析

    Java Native关键字原理及作用解析 什么是Java Native关键字? Java Native关键字指的是Java编程语言中用于声明原生方法的关键字。原生方法指的是用非Java语言编写的方法,在Java程序中调用这些方法时需要使用Java Native技术和Java Native Interface (JNI)。 Java Native的作用是什么…

    other 2023年6月26日
    00
  • nagios服务端配置及客户的安装配置步骤分享[图文]

    下面是详细讲解“nagios服务端配置及客户的安装配置步骤分享[图文]”的完整攻略。 Nagios服务端配置及客户的安装配置步骤分享 1. 安装Nagios服务端 使用以下命令下载Nagios源代码: wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.6.tar.g…

    other 2023年6月27日
    00
  • win10如何改成自己想要的文件夹用户名?

    首先需要明确一点,Win10的每个用户都有一个唯一的用户名,当我们新建一个用户时,系统会默认以英文缩写为用户名,如:user1、user2等,但是有时候我们不满意这个默认的用户名,想将其改成自己想要的名称。这个就需要修改注册表中的指定键值来实现。 以下是详细步骤: 1.首先,点击Win10的“开始”菜单,输入“CMD”,在搜索结果中选择“以管理员身份运行”。…

    other 2023年6月27日
    00
  • upupoo无法使用怎么办 upupoo打不开解决方法攻略大全

    upupoo无法使用怎么办 upupoo打不开解决方法攻略大全 如果你在使用upupoo时遇到了无法使用或者打不开的情况,不要着急,下面我将为你提供一些可能的解决方法。 确认网络环境是否正常 首先,需要确认你的网络环境是否正常。请检查你的网络连接是否可用,确保你的设备已连接到可用的网络,并尝试使用其他网站或应用程序。 清除浏览器缓存和Cookie 如果网络环…

    other 2023年6月27日
    00
  • 聊聊java 过滤器、监听器、拦截器的区别(终结篇)

    下面是详细讲解“聊聊java 过滤器、监听器、拦截器的区别(终结篇)”的完整攻略。 什么是过滤器、监听器和拦截器? 在 Java Web 开发中,过滤器(Filter)、监听器(Listener)、拦截器(Interceptor)都是用来对 HTTP 请求进行处理和过滤的技术手段。 过滤器(Filter) 过滤器(Filter)是在 Servlet 中用来对…

    other 2023年6月27日
    00
  • 分析设计模式之模板方法Java实现

    分析设计模式之模板方法是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中实现,使得子类可以不改变一个算法的骨架结构,即可重定义该算法的某些特定步骤。以下是完整的攻略: 模板方法Java实现 1. 定义抽象类 首先,我们需要定义一个抽象类,即模板类,该类中包含算法骨架和一些基本方法。这些基本方法可以是抽象方法、具体方法和钩子方法。 pu…

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