云计算百科
云计算领域专业知识百科平台

【CStackGUI 实战】我用自研的 Win32 GUI 框架写了个「工具箱启动器」:8 页签、真注册表操作、右键菜单管理

文章目录

    • 一、这是什么
    • 二、功能介绍
      • 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 本身感兴趣,或者想看右键菜单管理的实现细节,欢迎在评论区交流。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【CStackGUI 实战】我用自研的 Win32 GUI 框架写了个「工具箱启动器」:8 页签、真注册表操作、右键菜单管理
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!