Skip to content

Releases: daa0v0/MemOpt

MemOpt v1.1.3

Choose a tag to compare

@daa0v0 daa0v0 released this 08 Sep 04:49

v1.1.3

修复

  • 开机自启动失效:单实例互斥锁原先在提权流程之前创建——开机自启动的实例以普通权限启动,先持有互斥锁,再通过 runas 触发 UAC 重启一个提权新进程;新进程启动后再次检查互斥锁时,旧实例尚未退出仍持锁,于是新进程误判「MemOpt 已在运行」直接退出,随后旧实例也退出释放锁。交接瞬间两个实例都没存活,窗口/托盘不出现。现把互斥锁创建移到提权流程之后:旧实例在提权交接时从不持锁,新实例稳定成为唯一实例,交接竞态彻底消除。

安全

仅调整启动顺序,未触碰清理核心逻辑:清理互斥锁、150ms 步间延迟、区域掩码、Native API 调用顺序均保持不变。

MemOpt v1.1.2

Choose a tag to compare

@daa0v0 daa0v0 released this 06 Sep 03:26

v1.1.2

新增

  • DPI 自适应缩放(解决笔记本小屏可读性):以 96 DPI(100%)为设计基准引入统一缩放层(UIS()),窗口、字体、间距、卡片、按钮、状态条、设置窗口全部等比放大。
  • UI 放大封顶 115%:作为轻量小工具,若对 125%/150% 屏线性等比(1.25/1.5 倍)窗口会占满屏幕;现封顶 115%,保证清晰可读又不臃肿。

性能优化

24 小时常驻后台,3 秒周期刷新开销降到最低:

  • 托盘图标变化检测:百分比未变化时跳过图标重建与 Shell_NotifyIcon 调用。
  • 卡片与大百分比按需重绘:仅数值或文案变化才 SetWindowTextW / InvalidateRect。
  • 状态条文本缓存对比。
  • 去掉整窗周期性重绘。
  • 周期开销:1 次 GlobalMemoryStatusEx + 1 次 GetPerformanceInfo + 7 次字符串比较,无 GDI / 资源管理器 IPC / 重绘。

安全

性能优化与 DPI 缩放均未触碰清理核心逻辑:清理互斥锁、150ms 步间延迟、区域掩码、Native API 调用顺序全部保持不变。

MemOpt v1.1.1

Choose a tag to compare

@daa0v0 daa0v0 released this 03 Sep 18:20

[1.1.1] - 2026-09-04

修复

  • Hero 白色区压住物理内存卡片顶部:白色背景区底部此前比第一张「物理内存」卡片顶部低 14px,视觉上白色多出一截越过卡片;现与卡片顶缘精确对齐。
  • 主进度条与信息文字重叠:Hero 区「内存已使用 X.X GB」文字与自绘进度条 y 坐标重叠 10px,文字白色背景会从中间遮断进度条,看起来断断续续。

改进

  • 去掉 Hero 区大进度条:顶部只保留大百分比 + 内存信息两行,垂直居中(上下各 22px 对称留白),画面更简洁。
  • 主窗口加宽 480 → 500px:卡片、按钮比例更舒展;按钮行改为 270 + 20 + 170,左右缘与卡片精确对齐(原 480 宽下右缘收不齐)。
  • 卡片内部垂直分布匀称:顶部 14 · 标签 20 · 间距 8 · 数值 26 · 间距 6 · 进度条 8 · 底部 8,不再上挤下空;卡片间距 12 → 14。
  • 状态条 72 → 68:两行文字垂直居中,绿点对准第一行中心,底部不再空 8px。

维护

  • 删除废弃进度条相关死代码:draw_progress_bar、bar_color_kind 函数与 g_hBar、g_progress_pct 全局量。
  • 编译体积减小约 500 字节。

安全说明

仅外壳布局与绘制改动,未触碰清理核心逻辑:150ms 步间延迟、清理互斥锁、区域掩码、Native API 调用顺序均保持不变。

MemOpt v1.1.0

Choose a tag to compare

@daa0v0 daa0v0 released this 03 Sep 11:08

[1.1.0] - 2026-09-03

新增

  • 日志轮转:memopt.log 超过 512KB 时自动归档为 memopt.log.old,防止长时间运行日志无限膨胀。
  • 单实例保护:启动时创建 Local\MemOpt_SingleInstance 互斥锁,防止双开导致两个清理线程并发调用内核内存 API;已有实例时 GUI 弹提示、命令行静默退出。
  • DPI 感知:Win10 1703+ 使用 Per-Monitor V2,回退到 SystemAware,旧系统再回退 SetProcessDPIAware,高分屏下自绘 UI 不再被系统位图拉伸变模糊。
  • 启动横幅日志:每次启动记录内存占用、阈值、间隔、强力模式、后台自动、管理员权限等关键状态,方便日志定位。

改进

  • NTSTATUS 错误码中文说明:日志中常见错误码(如 0xC0000061、0xC0000003、0xC0000004)现在附带中文解释,一眼区分“权限不足”还是“系统不支持”。
  • 设置窗口数字输入框视觉优化:
    • 去掉 EDIT 控件默认 3D/实线边框,与 spinner 白底融为一体;
    • 数字改用常规字重字体,不再又粗又显眼;
    • 输入框高度缩小并垂直居中,增加左右呼吸空间;
    • % / 分钟 标签右移,不再紧贴输入框;
    • 按压 spinner 时外框高亮蓝色反馈,箭头改用小号字体。

维护

  • 删除 SettingsProc 中永不触达的死代码分支(自定义控件已走子类化,父窗口不会收到对应 WM_LBUTTONDOWN)。
  • 删除废弃函数 sync_settings_to_ui_unused。
  • 更新 README.md 功能列表与技术细节说明。

安全说明

本次所有改动均为外围优化,未触碰清理核心逻辑:

  • CLEAN_STEP_DELAY_MS 150ms 步间延迟保持不变;
  • 清理互斥锁 CLEAN_LOCK_TRY / CLEAN_UNLOCK 保持不变;
  • 区域掩码、安全闸门、Native API 调用顺序保持不变。