首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Windows 7中的shell新上下文菜单中添加非文件类型

在Windows 7中的shell新上下文菜单中添加非文件类型的项目,可以通过编写一个shell扩展来实现。shell扩展是一种Windows操作系统中的插件,它可以向Windows资源管理器的上下文菜单中添加自定义的菜单项。

以下是一个简单的示例,展示了如何在Windows 7中的shell新上下文菜单中添加一个自定义菜单项:

  1. 首先,需要创建一个新的C++项目,并在其中添加一个新的COM对象。这个COM对象将实现IShellExtInit和IContextMenu接口,以便在shell新上下文菜单中添加自定义菜单项。
  2. 在COM对象的实现中,需要实现IShellExtInit和IContextMenu接口的方法。其中,IShellExtInit接口的方法用于初始化shell扩展,而IContextMenu接口的方法用于添加自定义菜单项。
  3. 在IContextMenu接口的实现中,需要定义一个新的菜单项,并为其分配一个唯一的ID。这个ID将在用户单击菜单项时用于标识该菜单项。
  4. 在IContextMenu接口的实现中,还需要实现其他方法,以便在用户单击菜单项时执行相应的操作。
  5. 最后,需要在注册表中注册COM对象,以便Windows资源管理器可以找到并加载它。

以下是一个简单的示例,展示了如何在Windows 7中的shell新上下文菜单中添加一个自定义菜单项:

代码语言:c++
复制
#include<windows.h>
#include <shlobj.h>

class CMyContextMenu : public IShellExtInit, public IContextMenu
{
public:
    // IUnknown methods
    STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject);
    STDMETHODIMP_(ULONG) AddRef(void);
    STDMETHODIMP_(ULONG) Release(void);

    // IShellExtInit methods
    STDMETHODIMP Initialize(LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hKeyProgID);

    // IContextMenu methods
    STDMETHODIMP GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax);
    STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO pici);
    STDMETHODIMP QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);

private:
    LONG m_cRef;
};

// Implement IUnknown methods
STDMETHODIMP CMyContextMenu::QueryInterface(REFIID riid, void **ppvObject)
{
    if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IShellExtInit) || IsEqualIID(riid, IID_IContextMenu))
    {
        *ppvObject = this;
        AddRef();
        return S_OK;
    }

    *ppvObject = NULL;
    return E_NOINTERFACE;
}

STDMETHODIMP_(ULONG) CMyContextMenu::AddRef(void)
{
    return InterlockedIncrement(&m_cRef);
}

STDMETHODIMP_(ULONG) CMyContextMenu::Release(void)
{
    LONG cRef = InterlockedDecrement(&m_cRef);
    if (cRef == 0)
    {
        delete this;
    }

    return cRef;
}

// Implement IShellExtInit methods
STDMETHODIMP CMyContextMenu::Initialize(LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hKeyProgID)
{
    // TODO: Initialize the shell extension
    return S_OK;
}

// Implement IContextMenu methods
STDMETHODIMP CMyContextMenu::GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax)
{
    // TODO: Return the command string for the specified command
    return E_NOTIMPL;
}

STDMETHODIMP CMyContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
{
    // TODO: Execute the specified command
    return E_NOTIMPL;
}

STDMETHODIMP CMyContextMenu::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
{
    // TODO: Add the custom menu item to the context menu
    return E_NOTIMPL;
}

// DLL export functions
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppvOut)
{
    if (IsEqualCLSID(rclsid, CLSID_MyContextMenu))
    {
        CMyContextMenu *pMyContextMenu = new CMyContextMenu;
        if (pMyContextMenu == NULL)
        {
            return E_OUTOFMEMORY;
        }

        HRESULT hr = pMyContextMenu->QueryInterface(riid, ppvOut);
        pMyContextMenu->Release();
        return hr;
    }

    return CLASS_E_CLASSNOTAVAILABLE;
}

STDAPI DllCanUnloadNow(void)
{
    return S_OK;
}

STDAPI DllRegisterServer(void)
{
    // TODO: Register the shell extension in the registry
    return S_OK;
}

STDAPI DllUnregisterServer(void)
{
    // TODO: Unregister the shell extension from the registry
    return S_OK;
}

在上述示例中,CMyContextMenu类实现了IShellExtInit和IContextMenu接口,用于在shell新上下文菜单中添加自定义菜单项。在DllRegisterServer函数中,需要将COM对象注册到注册表中,以便Windows资源管理器可以找到并加载它。在DllUnregisterServer函数中,需要从注册表中删除COM对象的注册信息。

需要注意的是,在实际开发中,需要根据具体的需求来实现IShellExtInit和IContextMenu接口的方法,以便在shell新上下文菜单中添加自定义菜单项。此外,还需要根据具体的需求来实现其他方法,以便在用户单击菜单项时执行相应的操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

超详细VSCode安装教程(Windows)「建议收藏」

,然后进行填写(注意:请使用英文输入法) 三:开始菜单文件夹创建VSCode快捷方式 你可以选择更改开始菜单文件夹名字 或者不创建开始菜单文件夹 这一步无论你如何选择,实际上几乎不影响你使用...快捷方式 效果二:将“通过Code打开”操作添加Windows 资源管理器文件上下文菜单 选中任意文件,点击鼠标右键 可以直接通过VSCode打开该文件 效果三:将“通过Code打开...”操作添加Windows 资源管理器目录上下文菜单 选中任意文件夹,点击鼠标右键 可以直接通过VSCode打开该文件夹 将VS Code打开操作添加到文件、文件夹右键菜单,会给我们操作带来极大方便...效果四:将Code注册为受支持文件类型编辑器 对于受支持文件类型文件,可以右键 > 打开方式 > Visual Studio Code 来用VSCode打开该文件 效果五:添加到PATH 将VSCode...添加到环境变量Path,可以控制台(cmd或power shell输入code打开VS Code 或者输入 code .

6.8K10

Windows文件类型与链接类型默认程序

 Windows 7 及更高版本,类型可以 REG_EXPAND_SZ,并且通常 REG_EXPAND_SZ %ProgramFiles%。 ... Windows Vista 及更早版本,此项指示通过 ShellExecuteEx 调用时,应将 URL 连同本地文件名一起传递给应用程序。... Windows 7 ,它指示应用程序可以理解传递给它任何 http 或 https URL,而无需提供缓存文件名。 此注册表项与 SupportedProtocols 项相关联。...SupportedTypes 列出应用程序支持文件类型。 这样做可使应用程序“ 使用打开 ”对话框级联菜单列出。 NoOpenWith 指示未指定用于打开此文件类型应用程序。...windows系统推荐我们分三步进行 1、RegisteredApplications 这一步用来当windows搜索某种文件类型或链接类型时,将自身加入到这个搜索列表,主要是用来映射真正应用,具体路径是

34210
  • Windows一款效率神器,尤其是一键复制路径

    本频道我专注于分享Github和Gitee上高质量开源项目,并致力于推动前沿技术分享。 软件介绍 Shell是一个用于管理 Windows 文件资源管理器上下文菜单开源程序。...Shell提供了一系列提升效率功能,包括拷贝文件地址、快速打开目录、终端打开、自定义外观以及复杂嵌套菜单等。软件免费、无广告、轻巧,方便用户自定义修改Windows上下文菜单。...3.添加自定义项目,如子菜单菜单项和分隔符。 4.修改或删除系统或第三方软件添加项目。 5.支持文件、文件夹、桌面和任务栏等所有文件系统对象。 6.支持表达式语法,具有内置函数和预定义变量。...9.支持复杂嵌套菜单。 10.支持多列显示。 11.快速、便捷地纯文本配置文件。 12.资源占用最小。 13.没有功能限制。 使用步骤 1.从GitHub链接下载并安装Shell。...3.配置自定义上下文菜单项目,包括添加、修改或删除选项。 4.根据个人需求调整外观和布局。 5.保存配置并关闭软件,修改将立即生效。 6.可以快速利用上下文菜单功能提升工作效率。

    23110

    一键JS混淆加密:功能集成到鼠标右键菜单

    给JS文件添加右键菜单,一键完成JS混淆加密将“JS混淆加密”集成到鼠标右键菜单Windows一键JS混淆加密:功能集成到鼠标右键菜单目标:将“JS混淆加密”功能集成到鼠标右键菜单,一键点击完成JavaScript...2、注册表修改修改注册表是为给JS文件添加右键菜单,以便在右键点击.js文件时菜单显示“混淆加密”功能。...将下面的代码保存为right_click_menu.reg:Windows Registry Editor Version 5.00 ; 为 .js 文件类型定义上下文菜单项 [HKEY_CLASSES_ROOT...,-102""Position"="Bottom" ; 定义点击菜单项时要执行命令 [HKEY_CLASSES_ROOT\SystemFileAssociations\.js\Shell\JavaScript...\WangLiwen\\Desktop\\JShaman_JavaScript_Obfuscator\\obfuscate.js\" \"%1\""说明:“JavaScript Obfuscate”是菜单显示文字内容

    11910

    Win11 这 19 个新功能,你都用上了吗?

    Windows 11 ,用户可以打开剪贴板菜单 (Win + V) 并将内容粘贴为纯文本,删除所有不需要格式。 5、全新触控键盘 微软终于 Windows 上重新设计了触摸键盘!...例如,右键单击(上下文菜单)已更新为圆角和类似 Fluent Design 阴影效果。...11、从设置更改文件类型 Windows 设置应用程序将最终改进“选择默认应用程序”菜单。...通常,它效果很好,但自动过程有时会选择错误应用程序,或者您可能不小心“打开方式”弹出菜单中选择了错误应用程序。到目前为止,从“打开方式”菜单更改文件类型手动过程一直很烦人。...设置应用程序最终将允许用户轻松找到您正在寻找文件类型或应用程序。这个小修复程序可能对更改某些文件类型默认应用程序时遇到困难任何人都有帮助。

    23.2K30

    Windows 11这19个新功能,你都知道吗?

    Windows 11 ,用户可以打开剪贴板菜单 (Win + V) 并将内容粘贴为纯文本,删除所有不需要格式。 5、全新触控键盘 微软终于 Windows 上重新设计了触摸键盘!...例如,右键单击(上下文菜单)已更新为圆角和类似 Fluent Design 阴影效果。...11、从设置更改文件类型 Windows 设置应用程序将最终改进“选择默认应用程序”菜单。...通常,它效果很好,但自动过程有时会选择错误应用程序,或者您可能不小心“打开方式”弹出菜单中选择了错误应用程序。到目前为止,从“打开方式”菜单更改文件类型手动过程一直很烦人。...设置应用程序最终将允许用户轻松找到您正在寻找文件类型或应用程序。这个小修复程序可能对更改某些文件类型默认应用程序时遇到困难任何人都有帮助。

    3.2K20

    用NW.js构建跨平台桌面应用(2)-原生界面API

    App API - 应用核心 2.1 打开关联类型文件 NW.js应用有多种办法打开文件,此处谈论是打开关联文件类型;也就是说如果我们开发一个文本编辑器,那么我们希望系统右键单击一个txt文件出现...': true, //Webkit进程打开窗口 'inject-js-start': 'path/to/js', //文档loaded前注入脚本 'inject-js-end':...win.setProgressBar(num); //0到1//Mac上,参数为-1就跳一次,为1就一直跳直到用户点击 //Windows上,图标和窗口同时闪动参数指定次数 //Linux上,激活状态下...Menu API - 菜单栏和右键中的菜单 NW.js,共有三种类型菜单上下文菜单:右键单击应用内元素时 窗口菜单Windows或Linux,每个窗口上方都可以有自己菜单栏;==Mac...,同一应用所有窗口系统任务栏中共享一套菜单== 托盘菜单系统任务栏右侧,一般都有托盘区域,点击其中图标出现就是托盘菜单 4.1 上下文菜单 var menu = new nw.Menu(

    6.6K40

    定制化右键菜单

    windows系统右键菜单为操作提供了很大便利。如何把我们常用程序加入到系统右键菜单?如何定制化菜单行为?本文将对此进行介绍。 本文主要内容:介绍一种简单把程序加入右键菜单方法。...Unknow:作用于系统不能识别的文件类型,即没有注册文件类型。...Object 添加完ATL对象后,需要在.idl文件删除原来默认导出对象,把默认导出改为新建ATL对象。...c:GetCommandString(Vista以后系统不再有作用,不是实现重点。)d:InvokeCommand(用户点击插入菜单项时,将会调用这个方法。用户点击菜单项回调入口。)...4,插入自定义菜单该函数可以实现条件判断等操作。比如检测点击是svn文件夹才添加菜单。 5,实现菜单点击:该函数可以实现传入程序启动参数等操作。

    2K20

    Windows之注册表介绍与使用安全

    根据Windows安装应用程序扩展名,该根键指明其文件类型名称,相应打开该文件所要调用程序等等信息。...1.4.3.2 添加项 双击要添加注册表列表,然后单击要在其上放置项。 “编辑”菜单上,指向“新建”,然后单击“项”。 键入注册表项名称,然后按 ENTER 键。...1.4.3.3 添加值 单击想要添加注册表项或值项。 “编辑”菜单上,指向“新建”,然后单击要添加类型:“字符值”、“二进制值”,或“双字节值”。...键入名称,然后按 ENTER 键。 注意:添加值时,值名和数据类型将用默认值保存。 1.4.3.4 更改值 选择要更改值。 “编辑”菜单上,单击“修改”。...“数值数据”框,键入该值数据,然后单击“确定”。 1.4.3.5 删除注册表项或值 单击要删除注册表项或值项。 “编辑”菜单上,单击“删除”。 注意:可以从注册表删除注册表项和值。

    1.6K20

    IntelliJ IDEA 2022.2 正式发布,功能真心强大!

    如需更改检查高亮显示样式,可以使用 Highlighting in editor(编辑器高亮显示)下拉菜单进行设置,该菜单清楚显示了所有可用选项。...调整文件类型关联通知面板 当文件错误地与纯文本显式关联时,IntelliJ IDEA 现在会在通知说明错误文件类型关联并建议直接从编辑器中将其重置,无需 Settings / Preferences... Markdown 文件中生成目录操作 现在, Markdown 文件可以根据文档标题轻松生成目录。...文本光标自动移动到代码块末尾 代码添加页面元素时,文本光标现在将自动移动到添加代码块末尾,这样,您可以轻松导航并继续编辑。...从上下文菜单创建页面对象 处理现有页面对象类时如果输入了引用页面对象类,只需导航到警告上下文菜单并创建页面对象即可修正未解决代码警告。

    2.4K10

    IntelliJ IDEA - 2022.2 正式发布!众多特性解读!

    用于调整文件类型关联通知面板 当文件错误地与纯文本显式关联时,IntelliJ IDEA 现在会通知您错误文件类型关联并建议直接从编辑器重置它,而无需您在Settings / Preferences...您可以轻松地 Web 浏览器中一键打开这些链接,或者您可以从上下文操作菜单 (⌥⏎) HTTP 客户端中生成请求。...自动插入符号移动到代码块末尾 代码添加页面元素时,插入符号现在会自动移动到添加代码块末尾,因此您可以轻松地导航它并继续编辑。...从上下文菜单创建一个页面对象 每当您在处理现有页面对象类时键入未引用页面对象类时,您只需导航到警告上下文菜单并创建新页面对象即可修复未解析代码警告。...修改对话框 UI “修改”对话框 UI已成为默认选项。从版本 2022.2 开始,可以使用此 UI 添加和编辑表格所有子对象。旧 UI 将通过上下文菜单保持可用。

    5.2K40

    ISO镜像文件制作工具AnyToISO Pro for Mac

    BZ2,XAR,ZIP ...文件(有关完整列表,请参阅下面的“支持文件类型”部分)。...创建BIN / CUE选项有助于创建具有多个轨道RAW图像(例如,来自AudioCD)。Windows上,可以通过光盘上下文菜单直接从Windows资源管理器创建ISO。...然后“文件夹到ISO”选项卡下选择应用程序文件夹(Windows,可以资源管理器右键单击文件夹)。建议选择所需卷标。...4.AnyToISO与Windows资源管理器集成AnyToISO通过向支持文件,光学CD / DVD /蓝光光盘和普通文件夹添加上下文菜单,与Windows资源管理器透明地集成。...5.AnyToISO与Apple Finder集成MacOS上AnyToISO透明地与Apple Finder集成,将其自身添加到支持文件 “打开方式”菜单

    6.8K30

    Windows之隐藏特殊文件夹(自定义快捷桌面程序)

    1.shell:startup(开机自启) Windows shell:startup”是指一个特殊文件夹位置,其中包含配置为您启动计算机时自动启动程序快捷方式。...通过shell:startup”文件夹中放置程序快捷方式,您实际上是告诉 Windows 您登录时自动启动该程序。...“发送到”提供了一个上下文菜单选项,当您右键单击文件资源管理器文件或文件夹时,会出现该选项。 此菜单列出了您可以快速发送所选文件或文件夹各种位置和程序。...这个文件夹位于用户个人文件夹下 Windows XP时代,Quick Launch是一个非常有用功能,它允许用户将常用程序快捷方式添加到任务栏上一个小工具栏,从而能够快速启动这些程序。...尽管Quick LaunchWindows版本已不再起作用,但用户仍然可以通过手动启用Quick Launch来恢复这个功能,尤其是那些习惯于使用它用户。

    18510

    .NET MAUI 已在塔架就位 ,4月份发布RC

    充满无限希望明媚春天里,一路风雨兼程.NET 团队正奋力实现突破。 根据计划,新一代移动开发平台MAUI 将于4月份 发布RC。...解决了一系列令人印象深刻问题,.NET MAUI Preview 14 只增加了一个特性 MenuBar,这是它达到候选发布状态之前最后一站。...菜单栏 满足 Windows 应用程序窗口顶部和 MacOS 标题栏传统菜单需求。...菜单可以用 XAML 或 C# 表示任何ContentPage 托管Shell 或NavigationPage,开发人员可以首先添加一个MenuBarItem到页面的 MenuBarItems集合,并为...WinUI Shell 实现被转移以重用大多数与 Shell 应用程序相同组件。这使得能够以更加协作方式迭代其余 Shell API,这可以应用于 Shell 结构。

    39310

    Windows 实用技巧汇总

    图上这条右键命令一般 Win7 下是需要 Shift + 右键弹出菜单里才能看到,怎么省掉这个 Shift,直接就能出来呢? 先说方法: 将如下代码保存为 .reg 文件然后执行即可。...\Directory\Background\shell\cmd 下键 Extended 改名或者删除 磁盘分区右键 将注册表 HKEY_CLASSES_ROOT\Drive\shell\cmd...下键 Extended 改名或者删除 库文件夹右键 注册表 HKEY_CLASSES_ROOT\LibraryFolder\background 下建立和第一条 Directory\Background...相同键值 Win7 搜索文件内容 控制面板 – 索引选项 – 高级 – 文件类型 – 找到你想要搜索内容文件后缀名,点中它,然后选中下面的「为属性和文件内容添加索引」。...将任务栏库图标变成打开计算机 右键任务栏库图标,右键弹出菜单Windows 资源管理器”,单击“属性”。 ?

    1.2K30

    如何使用适用于Linux 2和Windows TerminalWindows子系统

    使用Linux子系统Linux版本2(WSL2),访问完整Linux shell需要一秒或更短时间。这意味着您现在可以快速地Windows内部基于Linux项目上工作。...下次启动时,您将立即访问Linux Shell。 图像安装完成后,系统将提示您在此shell创建root用户帐户: ?...您可以将其固定为“开始”以便更快地访问 打开命令提示符或Windows PowerShell并执行命令 bash Windows资源管理器,SHIFT+右键单击文件夹以打开特殊上下文菜单...Windows上安装LAMP Linux shell,键入以下要安装命令Apache2,MySQL和PHP。...这应该足以证明您可以Windows上轻松设置Linux开发环境。在下一节,我们将简要介绍一下Microsoft正在开发Windows终端。

    3.8K20

    Windows 实用技巧汇总

    目录 TOC {:toc} Win7 不按 Shift,右键显示 “在此处打开命令窗口 (W)” 图上这条右键命令一般 Win7 下是需要 Shift + 右键弹出菜单里才能看到,怎么省掉这个...\Directory\Background\shell\cmd 下键 Extended 改名或者删除 磁盘分区右键 将注册表 HKEY_CLASSES_ROOT\Drive\shell\cmd 下键...相同键值 Win7 搜索文件内容 控制面板 — 索引选项 — 高级 — 文件类型 — 找到你想要搜索内容文件后缀名,点中它,然后选中下面的「为属性和文件内容添加索引」。...将任务栏库图标变成打开计算机 右键任务栏库图标,右键弹出菜单Windows 资源管理器”,单击“属性”。...弹出对话框里将“目标”一栏 %windir%\explorer.exe 改为 %windir%\explorer.exe ,,即加上一个空格一个逗号。

    1.2K20
    领券