控制台扩展函数库
Win10 以上系统控制台支持以下快捷键:
Alt + Enter 切换全屏
Ctrl + Shift + 加号/减号 调整透明度
等待用户按 Y 或 N 键
控制台断言函数。
如果 @condition 不为真则在控制台打印错误信息 errorMessage 并暂停等待按键,
用户按键后抛出空异常(可被捕获但默认没有报错对话框)。
在控制台画一个色块,边框标题可省略,
参数@1,@2省略则自动居中
返回列,行,终止列,终止行
显示菜单。
参数 @1 必须指定非空数组。
参数 @2 可选用 console.color 命名空间的颜色值指定选中项颜色。
按方向键选择项目,回车键确认选项,ESC 键取消。
显示菜单。。
参数 @1 必须指定非空数组。
参数 @2 可选用一个字符串自定义输入提示。
刷新控制台输入缓冲区
丢弃缓冲区的所有输入
清屏
可选指定清屏的开始位置。
开始位置之前的输出保持不变,
仅清除指定位置以后的输出。
不指定参数则清除所有输入。
使用 console.getPos 函数可以获取当前位置(行号,列号)。
关闭控制台
显示变量的值,支持多参数
参数 @1 指定 COM 对象,且无其他参数,
则在控制台输出调用 com.DumpTypeInfo 函数返回的类型信息。
调用 com.tlbDoc.dump 函数可打印 COM 对象更详细的类型库信息
参数 @1 指定 COM 对象,参数 @2 指定枚举类型名,
在控制台输出该枚举类型的所有名值对。
通常枚举名值对也是 COM 常量名值对,
可以使用列举的枚举名字(不用指定枚举类型名)
作为 COM 对象的成员名获取枚举值
在控制台显示普通 table,string,number 等类型的值。
table 对象使用 table.tostring 转换为文本后输出。
table 的成员函数显示为 null,改用 console.varDump 可查看成员函数地址。
输出参数 @1 指定文件路径的文件内容
将对像转换为格式化的 JSON 文本并输出到控制台
对象如果包含数值索引自1开始的顺序数组成员则转换为 JSON 数组
JSON 数组会忽略其他索引不在数组范围内的成员
如果参数 @1 传入字符串或 buffer,转换为字节码数组再输出。
如果参数 @1 传入表参数,
使用 ..util.table.stringify 函数格式化为文本然后输出到控制台。
仅转换表包含的文本、数值、布尔值、嵌套表对象,
小数精度最大为 6 位、并自动清除小数尾部多余的 0,
如果表定义了 tostring 元方法、则转换为字符串
忽略其他类型,忽略循环引用的表
如果输出表的数组成员,则忽略非数组成员。
console.dumpTable 输出时对表的信息进行了精简,没输出的数据不是丢了。
console.dump, console.varDump 输出的信息更全,但也不是所有对象都能打印出来
是否在当前线程禁用 console 库以下输出函数:
log,print,dump,dumpJson,dumpTable,varDump
不会禁用 console.writeText,console.writeColorText 等基础输出函数。
不会禁用 io.print, io.stdout.write,io.stderr.write 等基础输出函数。
不会禁用 console.error, console.assert 等输出错误信息的函数。
不会禁用 console.open, console.pause, console.getText 等交互类函数。
清除当前行
可选指定要在当前行输出的一个或多个参数
清除当前输入光标到行尾的所有字符
注意用‘\r’虽然能回退光标到行首,但并不擦除已输出的字符
使用标准错误输出流(io.stderr)输出,可以重定向,
可添加任意个参数,所有参数也转换为字符串以后输出。
如果参数是表对象,则调用 table.tostring 序列化后输出。
如果不指定参数 @1 (null值)则直接忽略本次调用(不输出任何参数)。
在开发环境中会自动打开控制台以红色字体输出参数,并输出当前调用栈信息。
发布后的程序不会自动打开控制台,不会输出调用栈信息。
自动打开控制台窗口,调用 console.error 输出错误信息(或表对象的值),
之后暂停等待按键。
支持任意个参数,参数用法请参考 console.error 。
控制台窗口全屏切换
获取输入代码页,输出代码页
返回光标信息,
用法请参考此函数源码
错误输出句柄
标准输入句柄
等待并读取控制台按键,并返回虚拟键码。
程序退出或控制台关闭返回 null 。
读取用户输入的数值,
如果用户输入错误的数值则显示错误提示并重新读取输入直到成功。
可选用参数@2限定最小有效数值。
可选用参数 @3 限定最大有效数值。
标准输出句柄
读取密码
可选使用参数一指定控制台回显掩码,默认显示星号
返回光标坐标
返回屏幕缓冲区信息
返回控制台屏幕缓冲区每行可输入的字符数,
以及可输入的字符行数
此函数内部调用 io.getText 自控制台读取用户输入,
可选在参数 @2 中指定指定接收文本的缓冲区大小。
此函数不调用 io.stdin.read 等标准输入函数,而是直接自控制台读取文本。
获取控制台文本颜色,
返回颜色值为 背景色 * 0x10 + 文本颜色
获取控制台标题
返回控制台窗口句柄
使用此函数可判断当前是否已打开控制台窗口;
读取输入字节码,中文字返回两个字节码
控制台不回显字符
读取输入字符
控制台回显字符
以 16 进制输出参数 @data 指定的字符串或缓冲区中的所有字节码。
以明文输出参数 @title。
以 16 进制输出参数 @data 指定的字符串或缓冲区中的所有字节码。
可选用 @prefix 指定 16 进制编码前缀符号。
控制台当前是否显示光标
是否已显示控制台窗口。
检测键盘有没有输入
读取用户按键返回keyEvent对象
等待用户按任意键并返回keyEvent对象(不包含释放按键事件)
调用 console.writeText 在控制台输出信息,支持多参数。
参数为纯数组则序列化并输出值,其他参数调用 tostring 转为字符串输出。
多个参数间输出时用制表符分隔,并且在最后输入一个换行。
此函数必须先导入 console 库才能使用。
参数支持 UTF8/UTF16/ANSI 字符串,
二进制或非 UTF8 或系统 ANSI 编码的字符串请改用 console.hex 函数。
该函数可自动打开控制台窗口,而无需事先调用 console.open 。
注意 console.log 与 console.print 指向同一函数。
如果是输出错误信息,请改用 console.error 函数。
调用 console.log 函数输入所有参数,
然后调用 console.pause 函数暂停
设置控制台的显示模式
参数用法参考 WINAPI SetConsoleMode
参数@1如果省略则默认为标准输出句柄
成功返回当前模式,失败返回null
等待并在按任意键以后继续,用于在控制台分页输出时等待按键。
略参数 @1 则参数默认为 1 。
如果参数 @2 为true,按任意键以后清除控制台已显示的内容。
打开控制台窗口,
如果控制台窗口已打开,该函数不进行任何操作,
如果参数为 true 则将 console.utf8 设为true,
请参考 console.utf8 的说明
此函数重定向 msvcrt.dll 定义的 stdin,stdout,stderr 到控制台
暂停,
按任意键继续
返回用户按键键码
如果执行了 console.pause 函数并且在之后没有执行过 console 库输出函数则返回 true。
执行 console.log, console.dump, console.writeText 等输出函数会将 pausedOnce 属性设为 null 。
此属性由 console 库自动维护,调用代码不应修改些属性。
测试键盘有没有输入
有则读取并返回keyEvent对象,否则返回空
调用 console.writeText 在控制台输出信息,支持多参数。
参数为纯数组则序列化并输出值,其他参数调用 tostring 转为字符串输出。
多个参数间使用制表符分隔,并且在最后输入一个换行,
参数支持 UTF8/UTF16/ANSI 字符串,
该函数可自动打开控制台窗口;
注意 console.log 与 console.print 指向同一函数
如果是输出调试信息,建议大家使用 console.error 函数
自动打开控制台,
并调用 console.log 函数输出格式化字符串,
格式化语法与string.format相同
此函数为 console.getText 函数的别名。
可选用参数 title 指定输入提示,可选用参数 @length 指定接收文本的缓冲区大小。
读取标准输出缓冲区文本。
可选用参数 @1 指定要读取的缓冲区大小,
如果不指定则自动获取缓冲区长度
将字符串 repStr 重复 repCount 次后输出
设置代码页
可在打开控制台后使用该函数修改输入输入代码页
设置控制台文本颜色与背景色。
颜色颜色参数可指定 console.color 命名空间的颜色数值或颜色名称(字符串值)。
示例:console.setColor("red","darkBlue")
无参数恢复默认颜色
console.setCtrlHandlerThread( function(ctrlType){
/*控制台程序退出前是否触发 @hander 参数指定的线程函数,
@add 为 true 添加触发函数,为 false 移除,默认值为 true。
可选用 @owner 指定线程函数的 owner 参数。
使用前请先阅读多线程入门教程,了解线程函数基本规则。
ctrlType 为 null 表示控制台正常关闭,不可取消。
ctrlType 为 0 表示按下 Ctrl+ C。
ctrlType 为 1 表示按下 Ctrl + Break。
ctrlType 为 0 或 1 时返回 true 可阻止控制台退出
在此函数内不应再使用任何控制台函数*/
});
修改光标信息,
用法请参考此函数源码
设置控制台是否显示光标
指定showLoading函数使用的默认动画字符数组
除参数@1必须指定之外,其他参数可选
设置光标坐标
设置文本颜色与背景色,
设置整个窗口的背景色请使用 console.setColor;
颜色参数可指定 console.color 命名空间的颜色数值或颜色名称(字符串值)。
无参数恢复默认颜色
颜色值可以设为 背景色 * 0x10 + 文本颜色,
也可直接使用 console.color 的成员值 (数值)或名称(字符串值)作为参数
设置文本颜色,此函数为 setTextAttribute 函数的别名。
颜色参数可指定 console.color 命名空间的颜色数值或颜色名称(字符串值)。
示例:console.setTextColor("red","darkBlue")
无参数恢复默认颜色
设置控制台标题,
此函数会打开控制台窗口
显示进度动画
所有参数都可以省略,状态文本参数为 false 关闭动画,
调用 console 库的其他函数基本都会自动停止动画。
参数 @2 只能使用 console.color 的成员值。
在控制台高亮显示成功或失败状态。
如果参数 @condition 的逻辑值为 true 则以绿色输出 title,success,
否则以红色输出 title,error 。
所有参数可选。
success 默认值为 " ✓ 成功" ,参数 @error 的默认值为" ✗ 失败"
所有参数为 null 则输出 " ✗ 失败"
标准错误输出
标准输入
标准输出
控制台是否启用UTF-8编码,
所有线程设置必须相同,否则会导致重新打开控制台,
如果操作系统为英文环境,控制台启用 UTF-8 可正常显示中文,
此值为 null(默认值) 时由 aardio 自动选择编码( Win10 1709 以及之后的系统默认开启 UTF-8),
启用这个选项在 WIN10 以下系统可能出现显示不正常的问题。
此函数显示一个或多个参数的类型与值
调用 console.writeText 在控制台输出信息,支持多参数。
与 console.writeText 不同, console.write 可自动打开控制台而无需先调用 console.open 。
与 console.writeText 不同, console.write 不会在参数间添加制表符,也不会在尾部添加换行。
控制台输出字符串并覆盖最后显示的等长字符
如果有多个参数则调用string.format格式化后输出
调用 console.writeText 输出指定颜色文本,
此函数不会自动打开控制台窗口
颜色颜色参数可指定 console.color 命名空间的颜色数值或颜色名称(字符串值)。
示例:console.writeColorText("文本","red","darkBlue")
背景色可以省略
直接写入控制台,
参数支持 UTF8 / UTF16 / ANSI 编码的字符串,
支持 1 个或多个参数,但遇到null参数会停止输出后面的参数,
注意这个函数不会自动打开控制台,
此函数不调用io.stdout.write,io.print等标准输出函数
并且可以支持更多的Unicode字符
if(::Kernel32.GetConsoleWindow()){
}
..subscribe("afterConsoleOpen",function(){
/*console 库打开控制台执行此回调*/
} );
0; //黑色
9; //蓝色
0xB; //青色
1; //暗蓝色
3; //暗青色
8; //深灰色
2; //暗绿色
5; //暗紫色
4; //暗红色
6; //暗黄色
7; //灰色
0xA; //绿色
0xD; //紫色
0xC; //红色
0xF //白色
0xE; //黄色
按键是否释放
是否打开大写
是否扩展键
是否按下左ALT键
是否按下左CTRL键
是否打开NumLk键
是否按下右ALT键
是否按下右CTRL键
是否打开ScrLk键
是否按下SHIFT键
ASCII字节码
控制键状态码
Unicode字节码
重复次数
虚拟键码
扫描码