如何添加菜单并响应事件

nansa2000 2012-09-14 06:37:16
在vb中如何给一个外部程序添加一个自己的菜单并响应事件?

例如:vb程序中调用了记事本,在记事本的菜单栏中添加一个一级菜单,例如“我的菜单”,点击后也能响应当前vb中程序定义的一个事件。
...全文
428 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗷嗷叫的老马 2012-09-16
  • 打赏
  • 举报
回复
跨进程子类化,这个课题老外研究得比咱们早多了,而且已经都是不玩的了.....

看看这个:



http://allapi.mentalis.org/vbexamples/vbexample.php?vbexample=ADDMENU&category=MISC

这个就是与楼主的需求一模一样,添加菜单到其它进程,然后可以响应菜单事件,当时的一些流氓软件就是这样干的,中招后记事本啊资源管理器啊,都有一个新添加的菜单...

我04还是05年也有类似的需求,一番搜索才得出的.

记得这套DLL是那老外01年还是02年就已经完成的,咱们国内在这些方面确实还差一些,比不过啊.....
c_cyd2008 2012-09-15
  • 打赏
  • 举报
回复
对于标准的windows菜单,可以

Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Const MF_STRING = &H0&

Private Sub Command1_Click()
Dim hM As Long
hM = GetMenu(记事本的窗口句柄)

AppendMenu hM, MF_STRING, 123, "我的菜单"
End Sub

添加一个菜单项目,响应菜单命令可拦截WM_COMMAND消息进行处理;

但用VB响应外部菜单命令却会有一个几乎不能实现的障碍:windows不允许跨进程子类化窗口,因此也就无法直接拦截WM_COMMAND消息;其它语言,如C,可通过DLL注入实现子类化,遗憾的是VB的DLL不支持这样做!
只能望洋兴叹!
"微信公众平台企业号开发Java版"系列课程,采用java语言细致、详尽、全面地讲解微信企业号开发的相关知识点。该套课程,在"微信公众平台深度开发Java版v2.0"的基础上,对企业号开发的“回调模式”、“主动调用模式”、“JSAPI模式”分类讲解。贯彻“简单、高效、快捷”的课程特色,采用“一课两知识点”的课程进度,保证课程质量的同时,尽可能的压缩课程时间,让学员“以短的时间,学到多的知识”。课程的知识点包括:建立连接;接收消息与响应消息;被动响应消息;接收事件菜单事件、关注/取消关注事件、坐标事件、异步任务完成事件);发送消息(消息推送);自定义菜单;OAuth验证;Userid与openid互换;微信JS-SDK接口(重点);企业会话服务(重点);基础样式库(重点);企业号登录授权(重点),等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 详情 qq2326321088

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧