PADS在注册表中的菜单栏数据
位于
[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在注册表中的菜单栏数据的更多相关文章
- java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)
我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据.这对改善软件的人机可用性方面是很有用的.比如:数据库监控.日志工具,JDBMo ...
- 将字符串存储到注册表中,长度一定是 strlen(text) + 1
参考:https://docs.microsoft.com/en-us/windows/desktop/sysinfo/registry-value-types 将字符串存储到注册表中,长度参数一定要 ...
- 在注册表中无Python3.5安装路径的情况下安装pywin32-
当安装pywin32出现Python Version 3.5 required which was not found in the registry的时候表面注册表中没有Python3.5的安装路径 ...
- UAC在注册表中的对应位置
UAC在注册表中的对应位置 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System 相关键值设置: U ...
- C#中去掉表中重复的数据
/// <summary> /// 去掉表中重复的数据 int /// </summary> /// <param name="SourceTable&quo ...
- oracle的minus返回第一个表中有、第二个表中没有的数据
oracle的minus返回第一个表中有.第二个表中没有的数据 CREATE TABLE hovertree_union_1 ( id INT, val ) ); CREATE TABLE hover ...
- SqlSever基础 delete 删除一个表中的所有数据
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- usb由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备
在设备管理器的usb设备的属性中,显示提示“由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备”.注册表坏了.经过查询,解决方法如下: 方法:打开注册表编辑器(开始--& ...
- NSIS:在注册表中记录安装路径以便重装或升级时读取
原文 NSIS:在注册表中记录安装路径以便重装或升级时读取 在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬. 第1步:在“安装目录选择页面”前面加入以下代码: 1 !def ...
随机推荐
- Android添加代码检查权限
1,首先创建一个项目,然后创建一个类,hello.java public class hello { public static final String PERMISSION_SAY_HELLO = ...
- 静态方法中的this
1using System; 2using System.Web.Script.Serialization; 3 4namespace Demo 5{ 6 /**//// <summary ...
- Parameter index out of range (2 > number of parameters, which is 1)
今天在实现一个功能时遇到一个问题,解决了很久.结果是#{}与${}使用错误的原因.但是具体原因还不是很清楚,写此篇总结,知道的可以交流. 具体描述为:通过教师的头衔(1高级讲师2首席讲师)及名称进行模 ...
- 【转】java中volatile关键字的含义
java中volatile关键字的含义 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...
- AXUre
[ Javascript ] 一.javascript能用来干什么? 1.数据的验证. 2.对动态这本写到网页当中. 3.可以对事件做出响应. 4.可以读写html 中的内室. 5.可以检测浏览器 6 ...
- Ubuntu 16.04 软件中心闪退 解决方案
最近使用16.04不知道是哪里出了问题,软件中心打不开了,点击图标之后完全不显示GUI,过一会儿软件就自动关闭了,然后也没有报错的log. 虽然可以使用命令行升级,但是强迫症不能忍啊. 经过一番折腾, ...
- MVC5 CodeFirst (一)
创建一个MVC5项目,VS生成了AccountController.HomeController,F5直接运行,实现了注册.登录.修改……但是注册的用户只是在内存里,下面我们来持久化. 三个命令:en ...
- Send Push Notifications to iOS Devices using Xcode 8 and Swift 3, APNs Auth Key
Send Push Notifications to iOS Devices using Xcode 8 and Swift 3 OCT 6, 2016 Push notifications are ...
- JDBC的作用及重要接口
JDBC是由一系列连接(Connection).SQL语句(Statement)和结果集(ResultSet)构成的,其主要作用概括起来有如下3个方面: 建立与数据库的连接. 向数据库发起 ...
- python 读取并显示图片的两种方法
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...