180111 逆向-Windows消息机制(菜单消息-快捷菜单和托盘技术)

1625-5 王子昂 总结《2018年1月11日》 【连续第468天总结】
A. Windows消息系统-菜单消息
B.

快捷菜单

快捷菜单就是在窗口的客户区右击时弹出的菜单。快捷菜单最好是弹出式菜单。如果将整个主菜单作为快捷菜单,界面将显得很不友好。

设置

有3种方式可以获得作为快捷菜单的弹出式菜单:

  • 通过GetMenu函数获得窗口的主菜单,然后调用TrackPopupMenu函数将整个主菜单作为快捷菜单使用
  • 在获得主菜单后,通过GetSubMenu函数获取主菜单中的某个子菜单,然后调用TrackPopupMenu函数启动快捷菜单
  • 单独创建一个弹出式菜单资源,通过LoadMenu函数加载菜单,通过GetSubMenu函数获得该菜单的一个子菜单,然后调用TrackPopupMenu函数启动快捷菜单
响应

选中快捷菜单的某个菜单项后,Windows会向窗口发送一个WM_COMMAND消息
wParam的低16位为菜单项的ID,lParam为0,与主菜单相同
只要ID相同,那么快捷菜单和主菜单的响应是相同的

托盘技术

托盘技术是指单机窗口的关闭应用程序并不退出,或是最小化时,应用程序不最小化,而是在任务托盘中显示一个应用程序图标
当在托盘上单击时,应用程序恢复原状,右击时则弹出快捷菜单
单击动作会通过向窗口消息队列投递一个用户注册的自定义消息来实现,而消息的lParam中包含了是鼠标左键消息还是右键消息

托盘图标的具体信息通过结构体NOTIFYICONDATA的对象来指定,包括关联的窗口句柄,图标,单击时发出的自定义消息,指定一个提示等等

添加托班图标需要调用Shell_NotifyIcon函数向任务栏发送消息,此时必须传递一个NOTIFYICONDATA结构体对象的地址

C. 明日计划
考试~看书~复习~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值