扩展库 / clipboard

clipboard

读取与写入 Windows 剪贴板中的 UTF-8 文本、文件列表和 BMP 图片,并检查格式或保存临时快照。

版本 0.1.0 · Windows 专用 · C / xlang

快速开始

import clipboard

auto saved = clipboard.snapshot()
assert saved.valid()
assert clipboard.set_text("临时内容")
assert saved.restore()
saved.release()

快照是拥有型对象,可多次恢复,析构时自动释放;release() 可提前释放。写入操作会改动当前 Windows 剪贴板,测试时请使用隔离环境。

接口

入口用途
get_text / set_text / has_text读取、写入和检测 UTF-8 文本。
get_files / set_files / has_files处理路径列表,xlang 侧路径使用 UTF-8。
set_image / save_image / image_info_json导入或导出 BMP 图片,并读取尺寸与格式。
formats / formats_json / format_name枚举和查询剪贴板格式。
snapshot / Snapshot.restore / Snapshot.release独立保存可复制的格式并按需恢复,支持位图与增强/传统元文件。
last_error紧接着 clipboard 调用读取当前线程的错误类别。

C 程序可包含 extlibs/clipboard/include/clipboard.h。C 快照由调用方用 x_clipboard_snapshot_release 释放;文本、JSON 和其他 xvalue* 结果均由调用方用 xrtValueRelease 释放,不借用包内线程缓冲区。

验证与边界

powershell -NoProfile -ExecutionPolicy Bypass -File extlibs/clipboard/test/check.ps1 -SkipAot

2026-10-26 当前 Windows 默认门禁先通过严格 C、隔离图形快照、C 范例直跑和独立 EXE,以及只读语言用例;随后合法语言字符串数组传入 set_files 返回 false,原生 C 的同形数组可成功写入。默认门禁保留这条隔离正例并报红,完整语言/AOT 尚未验收,不签收发布级。120 字符中文注册格式名与 GDI 快照、NUL 拒绝、FLS 生命周期的历史专项证据仍见包内 README;快照限制为 256 个格式、256 MiB,恢复并非跨格式事务。

2026-10-21:公开综合范例改用独占临时文件,仅在快照有效后写入剪贴板,退出时恢复并释放;独立 window station 门禁确认原文本不变。不存在的 BMP 输入在 XLang 层抛 FileError,而非返回 false。完整 AOT 仍受主线缺符号阻断。