类对象支持库(不是扁平命令)。路径:支持库 → 扩展类库 → 进程类。
类型名必须写完整「进程类」。声明时自动创建,一般无需再调 创建*。
硬约束
- 类型名必须写「进程类」。
- 启动/等待/读写标准流;与扁平进程命令互补。
- 方法调用必须带括号。
- 伪控制台(ConPTY)仅 Win10+;Win7 自动回退管道,不闪退。输出可能含 VT 转义序列。
快速开始
进程类 p
如果 (p.启动("cmd.exe", "/c echo hi")) {
输出(p.读全部())
p.等待()
}
伪控制台(真终端)
进程类 p
如果 (p.是否支持伪控制台()) {
p.置伪控制台()
p.置控制台大小(100, 30)
}
如果 (p.启动("cmd.exe", "/c ver")) {
输出(p.读全部())
输出(p.是否使用伪控制台()) ' Win10+ 一般为真
}
进程类/创建
共 1 条。
创建进程
- 签名:
通用 创建进程() - 说明:创建一个进程会话。一般直接写「进程类 p」即可。用于启动外部程序并读取标准输出(与支持库「进程操作」无关)。可启动 cmd.exe / powershell.exe / pwsh.exe / 任意.exe;一次性命令用 读全部();常驻壳推荐 数据到达(&回调) 实时收(同 TCP),也可用 写()+读等待()。详见公开文档 process-obj。
进程类/方法
共 23 条。
启动
- 签名:
逻辑 启动(文本 程序路径, [文本 参数], [逻辑 显示窗口=假]) - 说明:启动外部程序;成功返回真。默认隐藏窗口并捕获输出。可启动 cmd / PowerShell / 任意 exe(见文档 process-obj「能执行什么」)。
- 参数一│文本 程序路径: 可执行文件(cmd.exe、powershell.exe、完整路径等)。
- 参数二│[文本 参数=”“]: 命令行参数(不含程序名)。
- 参数三│[逻辑 显示窗口=假]: 真=显示窗口。
置标准输入
- 签名:
逻辑 置标准输入(管道类 子进程读端) - 说明:把管道类的读端交给子进程标准输入。须在启动前调用。
- 参数一│管道类 子进程读端: 匿名管道读端;父进程用对应写端发送
置标准输出
- 签名:
逻辑 置标准输出(管道类 子进程写端) - 说明:把管道类的写端交给子进程标准输出。须在启动前调用。
- 参数一│管道类 子进程写端: 匿名管道写端;父进程用对应读端接收
置标准错误
- 签名:
逻辑 置标准错误(管道类 子进程写端) - 说明:把管道类的写端交给子进程标准错误。优先于「合并错误输出」。
- 参数一│管道类 子进程写端
清除标准句柄
- 签名:
无 清除标准句柄() - 说明:取消已设置的标准输入/输出/错误管道,恢复内置重定向。
置伪控制台
- 签名:
无 置伪控制台([逻辑 启用=真]) - 说明:启动前打开伪控制台(真终端)。Windows 10+ 可用;不可用(如 Win7)时启动仍成功,自动回退普通管道。与「置标准输入/输出/错误」互斥。适合彩色、清屏、需 TTY 的程序。
- 参数一│[逻辑 启用=真]
置控制台大小
- 签名:
无 置控制台大小([整数 列=80], [整数 行=25]) - 说明:伪控制台行列;启动前生效,运行中也可调整。
- 参数一│[整数 列=80]
- 参数二│[整数 行=25]
是否支持伪控制台
- 签名:
逻辑 是否支持伪控制台() - 说明:本机是否具备伪控制台能力(通常 Windows 10 及以上)。
是否使用伪控制台
- 签名:
逻辑 是否使用伪控制台() - 说明:最近一次启动是否实际走了伪控制台(回退管道时为假)。
写
- 签名:
逻辑 写(文本 内容) - 说明:向标准输入写入文本(UTF-8)。交互壳每行末尾须带换行。
- 参数一│文本 内容: 写入内容。
数据到达
- 签名:
无 数据到达(子程序指针 回调) - 说明:注册「标准输出有新数据」回调(同 TCP类 数据到达)。须在启动前注册;传 0 清除。有输出时在 UI 线程回调;形参:文本 数据(指针仅在回调返回前有效)。常驻壳优先用本事件,不必定时器/读等待轮询。
- 参数一│子程序指针 回调: 形如 函数 收到(文本 数据);传 0 清除
进程退出
- 签名:
无 进程退出(子程序指针 回调) - 说明:注册「子进程已退出」回调;须在启动前注册;传 0 清除。UI 线程触发。形参:整数 退出码。
- 参数一│子程序指针 回调: 形如 函数 退了(整数 退出码);传 0 清除
读
- 签名:
文本 读() - 说明:读取当前已有的标准输出(不阻塞)。无数据立刻返回空文本。要阻塞等到有数据请用 读等待()/接收();实时推送请用 数据到达;一次性进程请用 读全部()。
读等待
- 签名:
文本 读等待([整数 超时毫秒=-1], [整数 最大字节=0]) - 说明:阻塞直到有标准输出、进程退出、或超时。有数据就返回(不必等进程结束)。超时毫秒:<0 无限等;0 等同 读();>0 最多等这么久。UI 界面线程勿长时间阻塞;常驻监听优先用 数据到达(&回调)。同义名:接收。
- 参数一│[整数 超时毫秒=-1]: <0 无限;0 立即;>0 毫秒
- 参数二│[整数 最大字节=0]: ≤0 不限制本次最多读多少
接收
- 签名:
文本 接收([整数 超时毫秒=-1], [整数 最大字节=0]) - 说明:同 读等待()。便于写成「写/发送 → 接收」风格。
- 参数一│[整数 超时毫秒=-1]
- 参数二│[整数 最大字节=0]
读全部
- 签名:
文本 读全部([整数 超时毫秒=-1]) - 说明:等待进程结束(或超时)后返回全部标准输出。仅适用于会退出的一次性进程;交互壳(/K、-NoExit)不要用本方法等「单条命令结束」。
- 参数一│[整数 超时毫秒=-1]: ≤0=无限等待。
等待
- 签名:
逻辑 等待([整数 超时毫秒=-1]) - 说明:等待子进程退出;返回真=已退出。
- 参数一│[整数 超时毫秒=-1]: ≤0=无限等待。
结束
- 签名:
逻辑 结束() - 说明:强制结束子进程。
是否运行中
- 签名:
逻辑 是否运行中() - 说明:子进程是否仍在运行。
取进程ID
- 签名:
整数 取进程ID() - 说明:取子进程 PID。
取退出码
- 签名:
整数 取退出码() - 说明:取退出码;仍在运行时返回 -1。
取错误
- 签名:
文本 取错误() - 说明:取最后一次失败原因。
重置
- 签名:
无 重置() - 说明:结束并清理会话。
易错对照
| 错误 | 正确 |
|---|---|
| 类型写成「进程」 | 必须「进程类」 |
| 与扁平启动进程混淆 | 类对象适合持有会话与管道 |