位于

[HKCU\Software\Mentor Graphics\PADS9_5\PADS Layout\Workspaces\ENU\Default\BCGToolBar-593980]

下的二进制数据项:Buttons。

 字符串的表达 

该二进制数据记录字符串时,在字符串数据头部增加1byte用来记录长度。

,,,,6c,

首位05即表示接下来这个字符串的长度为5byte,“&File”。

 菜单项的表达 

记录菜单的数据长度不定,结构如下。

0b,,,, // CommandId 菜单的命令id,特殊值:FF FF FF FF为分隔线;00 00 00 00为拥有子菜单的菜单项。当commandId查找不到对应的command时,该菜单项会变成不可用。这是自定义菜单异常的常见情况。
,,,, // MenuItemType 通常都是全零,分隔线和最近使用的Macros,此处为00 00 04 00。
ae,,,, // IconId 若菜单有图标,这里会存放图标信息,否则为FF FF FF FF。
,,4e,,, // Text 菜单显示的文字。
,,,,,,,, // IsCustomed PADS的菜单项此处全零。自定义的菜单都为01 00 00 00 00 00 00 00。
,,,,,,,, // IconType 有图标值 00 00 00 00 01 00 00 00;没图标为 10 00 00 00 00 00 00 00
,,,,,,,, // 未知,始终为该值
,,,,,,,, // 未知,始终为该值
, // 子菜单的个数

菜单项之间的分隔

,,// 01 80 表示接下来还有菜单项,00 00 表示菜单项描述结束。

如果把最后一个菜单之前的分隔标记01 80替换为 00 00的话:

1. 启动PADS后最后一个菜单会消失掉,因为解析到此就结束了;最后一个菜单不会被加载到PADS界面中;

2. 在关闭PADS后,因为关闭时PADS会使用当前的UI重新写入注册表,因此原先位于 00 00 之后的二进制数据会全部被删掉。最后一个菜单的数据也就无法恢复了。

Buttons 数据开始的部分 

,,,,,,,,,, // 未知
ff,ff,,, // 未知
,, // 字符串长度,这里用了 2byte记录长度,而不是1byte。
,,,,,,6f,6f,6c,,,,4d,,6e,,,,,,6f,6e, // CBCGPToolbarMenuButton

Buttons数据结束的部分 

最后一个菜单项的数据结束后,会有2byte 0表示其后再无menuitem。然后才是

, // 表示后续没有菜单项了

,, // 未知
,4d,,6e,,,,,, // Menu Bar
6d,,, // 未知

PADS在注册表中的菜单栏数据的更多相关文章

  1. java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)

    我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据.这对改善软件的人机可用性方面是很有用的.比如:数据库监控.日志工具,JDBMo ...

  2. 将字符串存储到注册表中,长度一定是 strlen(text) + 1

    参考:https://docs.microsoft.com/en-us/windows/desktop/sysinfo/registry-value-types 将字符串存储到注册表中,长度参数一定要 ...

  3. 在注册表中无Python3.5安装路径的情况下安装pywin32-

    当安装pywin32出现Python Version 3.5 required which was not found in the registry的时候表面注册表中没有Python3.5的安装路径 ...

  4. UAC在注册表中的对应位置

    UAC在注册表中的对应位置 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System 相关键值设置: U ...

  5. C#中去掉表中重复的数据

    /// <summary> /// 去掉表中重复的数据  int /// </summary> /// <param name="SourceTable&quo ...

  6. oracle的minus返回第一个表中有、第二个表中没有的数据

    oracle的minus返回第一个表中有.第二个表中没有的数据 CREATE TABLE hovertree_union_1 ( id INT, val ) ); CREATE TABLE hover ...

  7. SqlSever基础 delete 删除一个表中的所有数据

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  8. usb由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备

    在设备管理器的usb设备的属性中,显示提示“由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备”.注册表坏了.经过查询,解决方法如下: 方法:打开注册表编辑器(开始--& ...

  9. NSIS:在注册表中记录安装路径以便重装或升级时读取

    原文 NSIS:在注册表中记录安装路径以便重装或升级时读取 在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬. 第1步:在“安装目录选择页面”前面加入以下代码: 1 !def ...

随机推荐

  1. java nio(non-blocking io)简介及和io

    在 Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节 的数据,面向流的I/O速度非常慢,而在Java 1 ...

  2. 算法练习:寻找最小的k个数

    参考July的文章:http://blog.csdn.net/v_JULY_v/article/details/6370650 寻找最小的k个数题目描述:查找最小的k个元素题目:输入n个整数,输出其中 ...

  3. winform中listview imagelist问题

    参考:http://www.it165.net/pro/html/201410/23603.html 关于imagelist失真问题: 1.颜色 将ColorDepth属性设置成Depth32Bit ...

  4. VS 2015 ,与Github的小问题笔记

    2016.10.15 1:从Git.OSChina(Github)上,下载的项目代码 在配置完Remote Url后只能提取数据,却无法拉取原因. 原因:未采用Remote分支创建本地分支. 决解: ...

  5. [原]centos6.5系统可用yum源(32位)以及rpmforge

    [10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686 gpgche ...

  6. 盲注----基于布尔的SQL盲注

    构造逻辑判断常用字符串截取函数http://www.cnblogs.com/yyccww/p/6054569.html常用函数left(a,b)  从左侧截取a的前b位right(a,b)  从右侧截 ...

  7. Linux的任务计划--cron入门

    Linux操作系统定时任务系统 Cron 入门 cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动 ...

  8. MySQL - MySQL++在c++11环境下接口设计

    安装官方提供的mysqlconnect后,可以使用mysql++库,在官方的C API上再次做一个c++面向对象封装. 这里mysql++的安装依赖于mysql-connector-c.安装参考:ht ...

  9. Unity3D-坐标转换笔记

    Transform.TransformPoint 作用 : 将一个点从以自身为坐标系的本地坐标转换成世界坐标 Transform.InverseTransformPoint 作用 : 将一个点从世界坐 ...

  10. listview优化技术

    1.在adapter中的getView方法中尽量少使用逻辑 2.尽最大可能避免GC 3.滑动的时候不加载图片 4.将ListView的scrollingCache和animateCache设置为fal ...