首页
社区
课程
招聘
AppendMenuA 的灵异事件
发表于: 2009-12-15 18:24 5032

AppendMenuA 的灵异事件

2009-12-15 18:24
5032
http://user.qzone.qq.com/859541900/blog/1260869252

AppendMenuA  建 子菜单的时候 原本参数应该是 MF_STRING 但写成 MF_STRING or MF_POPUP 也不会 出错,但 有可能会出现 灵异的事件

在批量创建 菜单的时候 很频繁的调用 这个函数

如果 创建 子菜单 参数 都是 MF_STRING or MF_POPUP  

然后 也有一个程序正在频繁的创建 菜单 或者 刚好也在创建 菜单 可能会发生 其他程序的 菜单被插入到 自己程序里的现象 !!!MF_POPUP   关键在这个参数 去掉就不会出现这个现象

测试 系统









ps 的菜单被插入到这个程序里了

我怀疑 是 碰巧 同时 2个进程一起调用了AppendMenuA 才出现的


第一个AppendMenu 是向菜单添加子菜单  第二个是把 MF_POPUP 类型的菜单 添加到 上级菜单

第一个AppendMenu  我参数使用了  MF_STRING or MF_POPUP 才出现这个现象

只用 MF_STRING 就不会出现

第一个AppendMenu 是向菜单添加子菜单 每次菜单句柄都是他的上级菜单句柄

第二个 是 MF_POPUP 类型的菜单 添加到 最顶级的菜单

这个从表面分析 第一个 AppendMenu 参数 为MF_STRING or MF_POPUP 才出问题

那应该是第一个的问题 传递给 顶级菜单的子菜单 ItemID
字段 传递成了 其他程序的 菜单句柄 所以就添加进去了

OD 日志

顶级菜单一共六个 测试第 2个  AppendMenu  中断 次数是对的 没多执行

第1个 AppendMenu  中断发现传递进去的 ItemID 参数也都是 我设置的ID 值

程序是隔离的 …… 能吧 这个参数传递错 那只有在 AppendMenu 内部了

载入 OD 后 先别运行  运行 IE 后 马上 在 OD 里启动 发现这个

有想测试的 联系我 我把程序发给你 ! Email :AsmFactory@foxmail.com

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
你应该再看一遍MSDN就知道是你参数错了还是API行为错了.

MF_POPUP : 用于插入一个子菜单
Specifies that the menu item opens a drop-down menu or submenu. The uIDNewItem parameter specifies a handle to the drop-down menu or submenu. This flag is used to add a menu name to a menu bar, or a menu item that opens a submenu to a drop-down menu, submenu, or shortcut menu.
MF_STRING : 用于添加一个菜单项
Specifies that the menu item is a text string; the lpNewItem parameter is a pointer to the string.

现在,你觉得 MF_POPUP  可以和 MF_STRING组合吗?呵呵.如果对规则不熟悉,先熟悉规则,这适合任何场合包括调用API~.
2009-12-16 12:46
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
QQ空间的图片是不能外联的。。。
2009-12-16 14:47
0
雪    币: 416
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
就是参数错了 !!!!!!但 参数错了 其他进程的菜单就应该 被插入到 自己的进程里 ?
2009-12-16 18:28
0
雪    币: 442
活跃值: (107)
能力值: ( LV9,RANK:350 )
在线值:
发帖
回帖
粉丝
5
can't see pic!
2009-12-16 18:58
0
游客
登录 | 注册 方可回帖
返回
//