当前位置: 首页 > news >正文

CDefFolderMenu_MergeMenu函数分析之添加了分割线和属性菜单项两项

CDefFolderMenu_MergeMenu函数分析之添加了分割线和属性菜单项两项


第一部分:
void CDefFolderMenu_MergeMenu(HINSTANCE hinst, UINT idMainMerge, UINT idPopupMerge, QCMINFO *pqcm)
{
    UINT idMax = pqcm->idCmdFirst;

    if (idMainMerge)
    {
        HMENU hmMerge = SHLoadPopupMenu(hinst, idMainMerge);
        if (hmMerge)
        {
            idMax = Shell_MergeMenus(
                    pqcm->hmenu, hmMerge, pqcm->indexMenu,
                    pqcm->idCmdFirst, pqcm->idCmdLast,
                    MM_ADDSEPARATOR | MM_SUBMENUSHAVEIDS | MM_DONTREMOVESEPS);
                
            DestroyMenu(hmMerge);
        }
    }


第二部分:
Shell_MergeMenus函数运行之前:+0x020 cItems           : 0x11


1: kd> dt win32k!menu 0xbc692924
   +0x000 head             : _PROCDESKHEAD
   +0x014 fFlags           : 1
   +0x018 iItem            : 0n0
   +0x01c cAlloced         : 0x18
   +0x020 cItems           : 0x11
   +0x024 cxMenu           : 0
   +0x028 cyMenu           : 0
   +0x02c cxTextAlign      : 0
   +0x030 spwndNotify      : (null)
   +0x034 rgItems          : 0xbc697244 tagITEM
   +0x038 pParentMenus     : (null)
   +0x03c dwContextHelpId  : 0
   +0x040 cyMax            : 0
   +0x044 dwMenuData       : 0
   +0x048 hbrBack          : (null)
   +0x04c iTop             : 0n0
   +0x050 iMaxTop          : 0n0
   +0x054 dwArrowsOn       : 0y00


Shell_MergeMenus函数运行之后:+0x020 cItems           : 0x13

1: kd> dt win32k!menu 0xbc692924
   +0x000 head             : _PROCDESKHEAD
   +0x014 fFlags           : 1
   +0x018 iItem            : 0n0
   +0x01c cAlloced         : 0x18
   +0x020 cItems           : 0x13
   +0x024 cxMenu           : 0
   +0x028 cyMenu           : 0
   +0x02c cxTextAlign      : 0
   +0x030 spwndNotify      : (null)
   +0x034 rgItems          : 0xbc697244 tagITEM
   +0x038 pParentMenus     : (null)
   +0x03c dwContextHelpId  : 0
   +0x040 cyMax            : 0
   +0x044 dwMenuData       : 0
   +0x048 hbrBack          : (null)
   +0x04c iTop             : 0n0
   +0x050 iMaxTop          : 0n0
   +0x054 dwArrowsOn       : 0y00

1: kd> dt win32k!tagITEM  0xbc697244+0x4c*d
   +0x000 fType            : 0
   +0x004 fState           : 0
   +0x008 wID              : 0x7916
   +0x00c spSubMenu        : (null)
   +0x010 hbmpChecked      : (null)
   +0x014 hbmpUnchecked    : (null)
   +0x018 lpstr            : 0xbc694b74  -> 0x50
   +0x01c cch              : 0xb
   +0x020 dwItemData       : 0
   +0x024 xItem            : 0
   +0x028 yItem            : 0
   +0x02c cxItem           : 0
   +0x030 cyItem           : 0
   +0x034 dxTab            : 0
   +0x038 ulX              : 0x7fffffff
   +0x03c ulWidth          : 0
   +0x040 hbmp             : (null)
   +0x044 cxBmp            : 0n-1
   +0x048 cyBmp            : 0n0
1: kd> db 0xbc694b74
bc694b74  50 00 26 00 72 00 6f 00-70 00 65 00 72 00 74 00  P.&.r.o.p.e.r.t.
bc694b84  69 00 65 00 73 00 00 00-55 48 5f 54 41 49 4c 00  i.e.s...UH_TAIL.

1: kd> dt win32k!tagITEM  0xbc697244+0x4c*c
   +0x000 fType            : 0x800
   +0x004 fState           : 3
   +0x008 wID              : 0x79fe
   +0x00c spSubMenu        : (null)
   +0x010 hbmpChecked      : (null)
   +0x014 hbmpUnchecked    : (null)
   +0x018 lpstr            : (null)
   +0x01c cch              : 0
   +0x020 dwItemData       : 0
   +0x024 xItem            : 0
   +0x028 yItem            : 0
   +0x02c cxItem           : 0
   +0x030 cyItem           : 0
   +0x034 dxTab            : 0
   +0x038 ulX              : 0x7fffffff
   +0x03c ulWidth          : 0
   +0x040 hbmp             : (null)
   +0x044 cxBmp            : 0n-1
   +0x048 cyBmp            : 0n0

http://www.lryc.cn/news/541839.html

相关文章:

  • mysql的源码包安装
  • win11系统无法打开软件_组策略无法打开_gpedit.msc不生效_为了对电脑进行保护,已经阻止此应用---Windows工作笔记057
  • 【JAVA】io流之缓冲流
  • from flask_session import Session 为什么是Session(app)这么用?
  • AI赋能的未来城市:如何用智能化提升生活质量?
  • 【Go】Go wire 依赖注入
  • 深度集成DeepSeek与Java开发:智能编码新纪元全攻略 [特殊字符]
  • WEB前端将指定DOM生成图片并下载最佳实践(html2canvas)
  • 掌握.NET Core后端发布流程,如何部署后端应用?
  • 深度学习学习笔记(34周)
  • C++ 设计模式-备忘录模式
  • TOGAF之架构标准规范-信息系统架构 | 应用架构
  • 第一届网谷杯
  • Linux(ubuntu) GPU CUDA 构建Docker镜像
  • mysql -DQL语句和DCL语句
  • 掌握 ElasticSearch 组合查询:Bool Query 详解与实践
  • C++ 类和对象(友元、内部类、匿名对像)
  • PostgreSQL 常用函数
  • 掌握 ElasticSearch 四种match查询的原理与应用
  • 解决:Conda虚拟环境中未设置CUDA_HOME的问题
  • easyexcel和poi同时存在版本问题,使用easyexcel导出excel设置日期格式
  • HarmonyOS 开发套件 介绍——下篇
  • 关于order by的sql注入实验
  • Transformers快速入门-学习笔记
  • luci界面开发中的MVC架构——LuCI介绍(二)
  • 第1章大型互联网公司的基础架构——1.10 其他NoSQL数据库
  • DeepSeek+Kimi生成高质量PPT
  • web网络安全:跨站脚本攻击(XSS)
  • 【Python爬虫(44)】分布式爬虫:筑牢安全防线,守护数据之旅
  • 微信小程序:多菜单栏设计效果