路径:支持库 → 文件监视支持库 → 文件监视。
硬约束
- 扁平命令;基于 Windows
ReadDirectoryChangesW:后台收变更,回调在 UI 消息线程(可安全改界面)。 - 最多同时 32 路;目录须已存在;失败 ID=
0。 - 注册回调写
&函数名(与定时器/热键同风格)。 - 退出前建议
停止全部监视()。 - 部分编辑器「写临时再替换」可能连续多条事件。
快速开始
整数 监视ID
函数 目录有变化 (文本 全路径, 整数 类型, 整数 监视ID) {
输出(全路径 + " 类型=" + 到文本(类型) + " id=" + 到文本(监视ID))
}
函数 主窗口.创建完毕 () {
监视ID = 监视目录(取运行目录(), &目录有变化, 真)
如果 (监视ID == 0) {
警告框("监视失败:" + 取监视错误())
}
}
文件监视
本分类共 14 条。
监视目录
- 签名:
整数 监视目录(文本 路径, 子程序指针 回调, [逻辑 含子目录=假], [整数 过滤标志=0], [文本 通配符=""]) - 说明:监视目录下文件/子项变更。成功返回监视 ID(>0),失败返回 0。 回调可为无参或带参(文本路径/整数类型/整数ID);带参时由生成器自动填入。
- 参数一│文本 路径: 要监视的目录(须已存在)
- 参数二│子程序指针 回调: &函数名。可无参(体内取监视*),或 函数 名(文本 全路径, 整数 类型, 整数 监视ID)
- 参数三│[逻辑 含子目录=假]: 真=递归监视子目录
- 参数四│[整数 过滤标志=0]: 0全部;1文件名 2目录名 4属性 8大小 16写入,可相加
- 参数五│[文本 通配符=”“]: 如 “*.txt”;空=不限(仅匹配文件名)
监视文件
- 签名:
整数 监视文件(文本 路径, 子程序指针 回调, [整数 过滤标志=0]) - 说明:监视单个文件(监视其父目录并按文件名过滤)。成功返回监视 ID,失败返回 0。
- 参数一│文本 路径: 文件完整路径(父目录须存在)
- 参数二│子程序指针 回调: &函数名,用法同 监视目录
- 参数三│[整数 过滤标志=0]: 同 监视目录
停止监视
- 签名:
逻辑 停止监视(整数 监视ID) - 说明:停止指定监视。成功返回真。
- 参数一│整数 监视ID: 监视目录/监视文件 的返回值
停止全部监视
- 签名:
无 停止全部监视() - 说明:停止本程序全部文件/目录监视。窗口关闭前建议调用。
监视是否有效
- 签名:
逻辑 监视是否有效(整数 监视ID) - 说明:判断监视 ID 是否仍在监视中。
- 参数一│整数 监视ID
暂停监视
- 签名:
逻辑 暂停监视(整数 监视ID) - 说明:暂停回调投递(底层仍挂接,但不触发回调)。成功返回真。
- 参数一│整数 监视ID
恢复监视
- 签名:
逻辑 恢复监视(整数 监视ID) - 说明:恢复此前暂停的监视。成功返回真。
- 参数一│整数 监视ID
取监视根路径
- 签名:
文本 取监视根路径(整数 监视ID) - 说明:取该路监视的目录路径(监视文件时为父目录)。
- 参数一│整数 监视ID
取监视变更路径
- 签名:
文本 取监视变更路径() - 说明:【回调内】相对监视目录的变更路径。无参回调时使用;带参时可直接用形参。
取监视变更全路径
- 签名:
文本 取监视变更全路径() - 说明:【回调内】变更项的完整路径。
取监视变更旧路径
- 签名:
文本 取监视变更旧路径() - 说明:【回调内】改名时的旧相对路径(类型=5 改名新时可用;类型=4 时等于当前路径)。
取监视变更旧全路径
- 签名:
文本 取监视变更旧全路径() - 说明:【回调内】改名时的旧完整路径。
取监视变更类型
- 签名:
整数 取监视变更类型() - 说明:【回调内】1=添加 2=删除 3=修改 4=改名(旧名) 5=改名(新名)。
取监视ID
- 签名:
整数 取监视ID() - 说明:【回调内】触发本次回调的监视 ID(多路监视时区分来源)。
回调怎么用
方式 A:带形参(推荐)
函数 目录有变化 (文本 全路径, 整数 类型, 整数 监视ID) {
输出(全路径 + " 类型=" + 到文本(类型))
}
监视目录(dir, &目录有变化)
形参名约定:
| 形参 | 填入 |
|---|---|
| 文本(默认) | 全路径 |
| 名含「相对」 | 相对路径 |
| 名含「旧」 | 改名旧路径 |
| 第一个整数 | 变更类型 |
| 名含 ID / 监视 | 监视 ID |
也支持 (文本)、(文本, 整数)、(文本, 整数, 整数)。
方式 B:无参 + 取监视*
函数 目录有变化 () {
输出(取监视变更全路径() + " 类型=" + 到文本(取监视变更类型()))
}
过滤标志(可相加)
| 值 | 含义 |
|---|---|
0 |
全部(默认) |
1 |
文件名 |
2 |
目录名 |
4 |
属性 |
8 |
大小 |
16 |
最后写入 |
例:1+16=17 → 文件名变更 + 写入。
变更类型
| 值 | 含义 |
|---|---|
1 |
添加 |
2 |
删除 |
3 |
修改 |
4 |
改名(旧名事件) |
5 |
改名(新名事件) |
易错对照
| 错误 | 正确 |
|---|---|
回调写函数名无 & |
&目录有变化 |
| 监视尚未创建的目录 | 先 创建目录 |
| 关闭窗口不停止监视 | 停止全部监视() |