Repository navigation
Releases: Mikachu2333/KeyCastOW
Releases · Mikachu2333/KeyCastOW
Release list
2.3.2 Fix
-
并发与定时器
- 将线程池定时器改为基于 SetTimer 的 UI 消息线程定时器。
- 避免工作线程直接访问 HWND、GDI/GDI+ 对象和全局 GUI 状态。
- 消除了退出阶段定时器回调访问已释放资源的主要风险。
- 禁止复制 CTimer,并修复定时器注册表容量不足时的失败处理。
-
指针、越界与内存
- 标签文本由共享裸指针缓冲区改为 std::wstring。
- 移除 textBuffer、内部指针移动、重叠覆盖和手工空间回收逻辑。
- 修复 labelCount - 1 在零值时下溢的问题。
- 修复 prepareLabels() 中零行时 offset 无符号下溢。
- 限制标签文本最大长度和标签数量。
- 增加标签索引、对象和画布有效性检查。
- 延迟鼠标标签改为 std::wstring,避免固定数组操作。
-
Hook 安全和逻辑
- 在解引用 Hook 的 lParam 之前检查 nCode 和空指针。
- 使用只读 Hook 数据视图。
- 修复键盘或鼠标 Hook 仅安装成功一个时状态不一致的问题。
- 重新启用 Hook 失败时回滚已安装的 Hook。
- 初始化点击动画类型,消除可能使用未初始化变量的问题。
- 修复有符号/无符号比较警告。
-
GDI/GDI+ 资源
- 检查 GetDC、CreateCompatibleDC、CreateCompatibleBitmap、
SelectObject、CreateFontIndirect 和 GDI+ 对象状态。 - 检查画布和窗口尺寸,防止向 UpdateLayeredWindow 传入无效参数。
- 修复部分失败路径上的 GDI 资源清理。
- Debug 日志文件现在仅在成功打开后关闭。
- 检查 GetDC、CreateCompatibleDC、CreateCompatibleBitmap、
-
设置窗口
- 修复 modeless dialog 错误使用 EndDialog 的问题。
- 保存、取消和关闭现在隐藏窗口,使句柄可安全复用。
- 关闭设置窗口时停止预览定时器。
- 修复设置窗口在负坐标和非主显示器工作区上的定位计算。
-
热键
- 新热键注册失败时恢复旧热键及旧配置。
- 避免新热键注册失败后程序永久失去切换热键。
-
初始化和错误处理
- 检查单实例互斥体创建失败。
- 使用当前用户会话范围的 Local\ 互斥体。
- 检查 GetModuleFileNameW 失败或路径截断。
- 检查 GdiplusStartup 返回状态。
- 正确处理 GetMessage 返回 -1。
- 检查设置写入结果,并在调试输出中报告保存失败。
-
DPI、权限与构建安全
- 改为 Per-Monitor DPI Awareness V2。
- Manifest 明确设置:
- asInvoker
- uiAccess=false
- 增加 MSVC 安全和兼容性选项:
- /W4
- /permissive-
- /sdl
- /DYNAMICBASE
- /HIGHENTROPYVA
- /NXCOMPAT
- /GUARD:CF
2.3.1 Fix and improvement
Features | 新功能
- feat: Add launch and tasks configuration for debugging x64 and x86
新增用于 x64 和 x86 环境调试的 launch 和 tasks 配置文件 - feat: Add
refreshLastLabelfunction to update the last key label
新增refreshLastLabel函数,支持动态更新最后一次按键的显示标签
Bug Fixes | 修复
- fix: Fix latent log error
修复潜在的日志记录错误问题 - fix: Fix annoying window size set requests
*修复频繁且烦人的窗口尺寸调整请求问题
2.3.0 Improvements
- 将语言文件集成到程序内,不再释放 Embed lang files in exe
- 改进默认配置 Improve default settings
2.2.2 Fix and Improvements
- 修复了潜在的内存安全问题
- 改进了设置GUI的布局
- 换用cmake编译
- 格式化文件
- 修复警告
- Fixed a potential memory security issue
- Improved the layout of the settings GUI
- Switch to cmake compilation
- Format the file
- Fix the warning
2.2.1 Fix settings
Fix missing settings for mouse animation.
修复了设置GUI中缺少的鼠标动画大小项目
2.2.0 Add mouse anime 增加鼠标点击动画
New Features
- Mouse click animation: Visual feedback on mouse clicks with distinct shapes/colors for left, right, middle, side buttons, and scroll directions. Configurable radius and toggle in settings.
Improvements
- Clamp all settings values to valid ranges on load and from dialog input
- Preview area now uses dialog units for proper high-DPI scaling
- Default font changed from "Microsoft YaHei" to "Microsoft YaHei UI"
LocaleManagernow handles UTF-8 BOM files correctly- Tray tooltip unified to "KeyCastOW: Show Key Log"
- Extracted
updateMainWindowTransparency()helper to eliminate duplicate code
Bug Fixes
- Fixed
ColorDialogreturn value logic (early return on cancel) - Added
freadreturn value checks in replay thread to prevent out-of-bounds reads - Fixed GDI resource leaks: properly restore old bitmap/font before cleanup
- Added null-pointer guard in timer callbacks
- Fixed
swprintfformat specifier warnings (%d→%lufor unsigned values) - Initialize
FILE *streamtoNULLwith proper open-failure handling
2.1.0.0 Ground-Breaking Updates
- Prevent Duplicate Instances (fix brookhong#27)
- Correct Readme (@RokeJulianLockhart)
- Bump MSVC to v145 (@Crazy-A2)
- Support both x86 and x64 builds (@KimBioInfoStudio)
- Add gitignore (@dbratell)
- Support keyboards with AltGr (@dbratell)
- Bump version to 2.1.0.0
- Format code with LLVM style using clang-format
- Standardlize project struct
- Add localization support (fix brookhong#11)
- Fix memory leaks, dangling pointers, uncollected handles, and unreleased resources, etc..
- Add releases (fix brookhong#6, brookhong#7, brookhong#13, brookhong#22)
- Add MIT License (fix brookhong#19)
- Avoid create duplicate msg when wheel up/down (fix brookhong#21 @RuBing-Yang)