Skip to content

添加注册uri的功能#366

Merged
2-2-3-trimethylpentane merged 1 commit intoInkCanvasForClass:betafrom
PANDAJSR:feat--允许第三方程序通过系统URI来控制部分功能
Feb 4, 2026

Hidden character warning

The head ref may contain hidden characters: "feat--\u5141\u8bb8\u7b2c\u4e09\u65b9\u7a0b\u5e8f\u901a\u8fc7\u7cfb\u7edfURI\u6765\u63a7\u5236\u90e8\u5206\u529f\u80fd"
Merged

添加注册uri的功能#366
2-2-3-trimethylpentane merged 1 commit intoInkCanvasForClass:betafrom
PANDAJSR:feat--允许第三方程序通过系统URI来控制部分功能

Conversation

@PANDAJSR
Copy link
Contributor

@PANDAJSR PANDAJSR commented Feb 4, 2026

摘要 (Summary)
本项目引入了自定义外部协议 icc:// 支持,允许其他程序(如自定义侧边栏、网页或快捷方式)通过 URI 远程控制 Ink
Canvas。通过此功能,用户可以快速切换收纳状态或调用侧边栏工具(点名、计时器、白板等)。

主要改动 (Key Changes)

  1. 协议注册与管理
  • 新增 Helpers/UriSchemeHelper.cs: 负责处理系统注册表的写入与注销。采用 HKEY_CURRENT_USER 路径,无需管理员权限即可启用。
  • 设置 UI: 在“高级选项”面板中增加了“启用外部协议 (icc://)”开关,并支持状态实时同步。
  1. 指令解析与执行
  • 新增 MainWindow_cs/MW_UriHandler.cs: 实现了 HandleUriCommand 方法,解析传入的 URI 路径。
  • 基础指令: 支持 fold (收起), unfold (展开), toggle (切换)。
  • 工具指令: 支持直接打开收纳模式下的工具:randone (单次抽), rand (随机抽), timer (计时器), whiteboard (白板)。
  1. 增强 IPC (进程间通信)
  • 多实例处理: 优化了 App.xaml.cs 的启动逻辑。当软件已在运行时,新的 URI 调用会通过
    IPC(基于系统事件和临时文件)将指令发送给已有的单实例处理,避免重复启动。
  • 启动参数: 即使软件未运行,启动时带有的 URI 参数也能被正确捕获并执行。
  1. 隐藏功能:收起时彻底隐藏
  • 新增设置项 ThoroughlyHideWhenFolded: 这是一个专为解决界面冲突设计的隐藏功能。
  • 逻辑实现: 开启后,进入收纳模式将直接隐藏主窗口 (Visibility = Hidden),而非停留在屏幕边缘。可通过 icc://thoroughHideOn/Off 指令控制。
  1. 文档支持
  • 新增 Docs/ExternalProtocol.md: 详细记录了所有可用指令、调用方式及开发者说明。

测试用例 (Test Cases)

  1. 设置测试: 在高级设置中开启开关,检查注册表 HKCU\Software\Classes\icc 是否正确生成。
  2. 运行调用: 在运行对话框 (Win+R) 输入 icc://timer,观察软件是否自动弹出计时器。
  3. 状态控制: 在展开状态下输入 icc://fold,验证墨迹是否清空并自动收纳。
  4. 彻底隐藏测试: 调用 icc://thoroughHideOn 后收起软件,确认主窗口不再占用屏幕边缘空间。

其实就是为了让我的 PANDAJSR/sidebar-for-class 能够方便的调用 ICC-CE 中的功能

@2-2-3-trimethylpentane 2-2-3-trimethylpentane merged commit 696ed84 into InkCanvasForClass:beta Feb 4, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants