文章目录
-
- 一、这是什么
- 二、功能介绍
-
- 1. 八页签工具启动器 + 全局搜索
- 2. 我的工具:改一个 ini 就能加工具,不用重编译
- 3. 右键菜单管理:扫描、批量禁用、备份删除、一键还原
- 4. 成对开关:模式照抄原版,落点绝不越界
- 5. 日志与主题
- 三、几个值得说的设计
- 四、怎么跑起来
- 写在最后
toolbox 是 CStackGUI 框架的旗舰示例 —— 一个对标现成工具箱产品的完整桌面程序:60+ 个真实可启动的工具、能真装真撤的右键菜单管理、真读写注册表的批量禁用/备份/还原,连自检红线都写进了代码。所有操作都是真的,不是贴图演示。
先看效果: 【截图位 1:8 页签主界面全景】 
【截图位 2:右键增强页——扫描结果表格 + 批量操作按钮】 
一、这是什么
toolbox(工具箱启动器)是 CStackGUI 框架的示例工程之一。CStackGUI 是一个自研的 Win32 GUI 框架,核心思路是:
- 界面在 .cgui 文件里(JSON 描述,用配套画布设计器可视化编辑,F5 直接编译运行);
- 行为在纯 C 代码里(回调函数按控件 id 绑定,界面与逻辑彻底分离);
- 配套 runtime(自绘控件、皮肤、注册表/文件/进程工具库)、designer(Electron 画布)、以及一组覆盖各控件的示例。
toolbox 的定位是"对标一个真实产品功能面"的综合示例——界面形态与行为逻辑都按真实工具箱的标准来做。
目录里只有三样东西:
| main.c | 全部行为:工具命令表、搜索、我的工具、成对开关、右键菜单管理、日志 |
| toolbox.cgui | 界面定义(画布里打开可直接编辑) |
| toolbox.exe / lib/ | 构建产物 |
二、功能介绍
1. 八页签工具启动器 + 全局搜索
常用 / 常用设置 / 我的工具 / 系统工具 / 清理优化 / 隐私设置 / 应用管理 / 右键增强,共 8 个页签,60+ 个内置工具(任务管理器、磁盘管理、计划任务……全是真实命令启动)。
底栏有完整的功能带:「本页 X 个(共 Y 个)」实时计数 + 搜索 / 日志 / 设置 / 关于 / 检查更新。全局搜索按名称和命令双字段过滤,还有一个可选开关——输入关键字自动切到搜索页;
「常用」页则自动记录你最近使用的工具。 
2. 我的工具:改一个 ini 就能加工具,不用重编译
8 个槽位,配置文件在 %LOCALAPPDATA%\\toolbox\\mytools.ini:
[t1]
name=DeepSee
cmd=deepsee.exe –work D:\\
[t2]
name=公司 OA
cmd=https://oa.example.com
保存后点「我的工具」页的重新载入,槽位按钮立刻生效;空槽位自动置灰。加一个自定义工具连一行 C 代码都不用碰。
3. 右键菜单管理:扫描、批量禁用、备份删除、一键还原
这是我认为最有意思的一页:
- 扫描:枚举 HKCU + HKLM 下六个位置(文件 / 文件夹 / 文件夹空白处 / 桌面 / 磁盘 / 通用对象)的 shell 程序菜单与 shellex DLL 扩展项,逐项读取 MUIVerb / command / LegacyDisable,按来源分组(工具箱装的 / 程序装的 / 扩展项)、按状态分类(在用 / 已禁用 / 无命令);
- 搜索 + 五路过滤:标题子串搜索(忽略大小写),全部 / 未禁用 / 程序装的 / 已禁用 / 扩展项;
- 多选行真操作(每次操作后自动重扫):
- 禁用 —— 写入 LegacyDisable 值;
- 恢复 —— 删除该值;
- 备份并删除 —— 先 reg export 导出 .reg 再整键删除,动手前弹确认框列出全部路径;
- 还原本次改动 —— 禁用过的删值、删过的导入备份,「曾改动」列表可查。

工具箱自己装的两条右键菜单(复制文件路径 / 在此处打开终端)也是真装真撤,用 reg.exe 完成,删得干净。
4. 成对开关:模式照抄原版,落点绝不越界
「装上 / 撤掉」成对开关控制工具箱自身行为:日志镜像、日志时间戳、自动切搜索页、记录最近使用、右键沙箱标记。与很多工具不同的是,这些开关的落点是程序自己的沙箱键 HKCU\\Software\\CStackGUI\\examples\\toolbox —— 真改真还原,配「查看曾改动 / 还原全部」,绝不碰系统键。
5. 日志与主题
日志是非模态对话框(可以边操作边看),支持镜像到控制台和行首时间戳(各由开关控制);设置页是深浅主题一键切换,状态栏每次操作都有回执文案。
三、几个值得说的设计
边界照实说,不在示例里装。 界面上直接写明:系统区(HKLM)只读得到、修改需要管理员身份,未提权时点击会明确拒绝;shellex 扩展项只显示不给动。
原版有彩色图标、106+ 工具,这里如实收在 60+、用配色代替贴图——诚实差异在源码注释里逐条列着。
自检红线。 程序支持 –selftest 无窗自检:不启动任何程序、不读写磁盘、凡有副作用的操作先判断有没有窗口。按钮 id 与命令表不同步会在日志里报"不同步",自检输出可直接 grep,适合放进 CI。
数据落点全部可预期:我的工具配置、.reg 备份、app.log(256KB 轮转)都在 %LOCALAPPDATA%\\toolbox\\,被写的注册表位置只有上面那个沙箱键。
加一个内置工具只要两步:.cgui 加按钮 + k_tools[] 命令表加一行,计数和搜索自动生效。
四、怎么跑起来
rem 仓库根目录
build-app.bat toolbox
examples\\toolbox\\toolbox.exe
examples\\toolbox\\toolbox.exe –selftest rem 无窗自检
也可以直接用画布打开 toolbox.cgui 按 F5。工程里还带了真机验证脚本(自动建探针键 → 模拟点击扫描/搜索/过滤/批量操作 → 注册表真值断言 → 截图取证 → 清理),改右键管理相关代码后可以一键回归。
写在最后
这个示例想证明一件事:GUI 框架的示例不必是玩具。
控件、皮肤、注册表、进程、文件这些原料齐了之后,一个 C 语言写的桌面工具完全可以做到"功能真实、边界诚实、可自检可回归"。
如果你对 CStackGUI 本身感兴趣,或者想看右键菜单管理的实现细节,欢迎在评论区交流。
网硕互联帮助中心





评论前必须登录!
注册