开源添加菜单到系统菜单_Jnrl
功能说明:该程序是一个基于易语言开发的Windows窗口系统菜单定制工具,主要功能是动态修改标准窗口左上角的系统菜单(即点击窗口图标弹出的菜单),在其中插入自定义菜单项,并支持响应用户操作、显示提示信息以及恢复原始系统菜单。程序启动时,通过子程序“__启动窗口_创建完毕”执行核心初始化:首先获取窗口原始消息处理函数地址(GetWindowLong + GWL_WNDPROC),然后使用SetWindowLong进行窗口子类化(Subclassing),将消息处理重定向至自定义的“SubClass1_WndMessage”子程序;接着调用GetSystemMenu获取当前窗口系统菜单句柄,并通过多次AppendMenu向菜单中添加分隔线(标志位MF_SEPARATOR = 2048)和功能项——具体包括一条空分隔线、一项带快捷键“&A”的“关于本程序”菜单(ID=2001)、另一条空分隔线,以及一项带快捷键“&R”的“恢复系统菜单”菜单(ID=2003)。在消息处理子程序“SubClass1_WndMessage”中,程序仅拦截WM_SYSCOMMAND(Msg=274)消息,对不同wParam值进行分支处理:当用户点击“关于本程序”(wp=2001)时,弹出说明信息框;当点击“恢复系统菜单”(wp=2003)时,先调用GetSystemMenu(..., 1)强制重置系统菜单为默认状态,再通过SetWindowLong2还原原始窗口过程(即解除子类化),最后弹出成功提示;其余所有消息(包括其他系统命令及非系统消息)均透传给原始窗口过程处理,确保窗口基础功能不受影响。此外,在窗口销毁前(__启动窗口_将被销毁),程序还做了安全兜底:检查当前窗口过程是否已被正确还原,若未还原则主动恢复,避免内存泄漏或句柄异常。综上,本程序不涉及界面控件操作、数据处理或外部通信,纯粹聚焦于Windows底层窗口机制的实践应用,典型用途包括教学演示(展示子类化、系统菜单操作、消息钩子原理)、轻量级软件个性化增强(如为自有软件添加快速入口或版权信息),或作为可复用的菜单扩展模块嵌入更大型易语言项目中。其设计简洁、职责单一、行为可控,体现了典型的Win32 API封装式编程风格。
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ SubClass1_WndMessage
| |
| |------ __启动窗口_将被销毁
| |
| |
======调用的Dll
| |
| |---[dll]------ AppendMenu
| |
| |---[dll]------ CallWindowProc
| |
| |---[dll]------ GetSystemMenu
| |
| |---[dll]------ SetWindowLong1
| |
| |---[dll]------ SetWindowLong2
| |
| |---[dll]------ GetWindowLong
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。