控制台扩展函数库
Win10 以上系统控制台支持以下快捷键:
Alt + Enter 切换全屏
Ctrl + Shift + 加号/减号 调整透明度
等待用户按Y或N键
在控制台画一个色块,边框标题可省略,
参数@1,@2省略则自动居中
返回列,行,终止列,终止行
刷新控制台输入缓冲区
丢弃缓冲区的所有输入
清屏
关闭控制台
显示变量的值,支持多参数
参数 @1 指定 COM 对象,且无其他参数,
则在控制台输出调用 com.DumpTypeInfo 函数返回的类型信息。
调用 com.tlbDoc.dump 函数可打印 COM 对象更详细的类型库信息
参数 @1 指定 COM 对象,参数 @2 指定枚举类型名,
在控制台输出该枚举类型的所有名值对。
通常枚举名值对也是 COM 常量名值对,
可以使用列举的枚举名字(不用指定枚举类型名)
作为 COM 对象的成员名获取枚举值
在控制台显示普通 table,string,number 等类型的值,不显示函数等,
table 对象仅显示键名为字符串的值,以及数值索引自 1 开始的顺序数组
输出参数 @1 指定文件路径的文件内容
将对像转换为格式化的 JSON 文本并输出到控制台
对象如果包含数值索引自1开始的顺序数组成员则转换为 JSON 数组
JSON 数组会忽略其他索引不在数组范围内的成员
如果参数 @1 传入字符串或 buffer,转换为字节码数组再输出。
如果参数 @1 传入表参数,
使用 ..util.table.stringify 函数格式化为文本然后输出到控制台。
仅转换表包含的文本、数值、布尔值、嵌套表对象,
小数精度最大为 6 位、并自动清除小数尾部多余的 0,
如果表定义了 tostring 元方法、则转换为字符串
忽略其他类型,忽略循环引用的表
清除当前行
可选指定要在当前行输出的一个或多个参数
清除当前输入光标到行尾的所有字符
注意用‘\r’虽然能回退光标到行首,但并不擦除已输出的字符
使用标准错误输出流(io.stderr)输出,可以重定向,
可指定任意个参数,参数转换为字符串以后输出。
在开发环境中会自动打开控制台以红色字体输出参数,并输出当前调用栈信息。
发布后的程序不会自动打开控制台,不会输出调用栈信息。
控制台窗口全屏切换
获取输入代码页,输出代码页
返回光标信息,
用法请参考此函数源码
错误输出句柄
标准输入句柄
读取用户输入的数值,
如果用户输入错误的数值则显示错误提示并重新读取输入直到成功,
可选在参数@2中指定缓冲区大小
标准输出句柄
读取密码
可选使用参数一指定控制台回显掩码,默认显示星号
返回光标坐标
返回屏幕缓冲区信息
返回控制台屏幕缓冲区每行可输入的字符数,
以及可输入的字符行数
此函数内部调用io.getText自控制台读取用户输入,
可选在参数@2中指定缓冲区大小
此函数不调用io.stdin.read等标准输入函数
获取控制台文本颜色,
返回颜色值为 背景色 * 0x10 + 前景色
获取控制台标题
返回控制台窗口句柄
使用此函数可判断当前是否已打开控制台窗口;
读取输入字节码,中文字返回两个字节码
控制台不回显字符
读取输入字符
控制台回显字符
调用console.log以16进制输出字符串、或缓冲区的所有字节码,
也可以使用 console.dumpTable 函数将字符串或buffer转换为字节码数组输出
控制台当前是否显示光标
是否已显示控制台窗口。
检测键盘有没有输入
读取用户按键返回keyEvent对象
等待用户按任意键并返回keyEvent对象(不包含释放按键事件)
调用 console.writeText 在控制台输出信息,支持多参数。
多个参数间输出时用制表符分隔,并且在最后输入一个换行。
此函数必须先导入 console 库才能使用。
参数支持 UTF8/UTF16/ANSI 字符串,
二进制或非 UTF8 或系统 ANSI 编码的字符串请改用 console.hex 函数。
该函数可自动打开控制台窗口,而无需事先调用 io.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 到控制台
暂停,
按任意键继续
返回用户按键键码
测试键盘有没有输入
有则读取并返回keyEvent对象,否则返回空
调用console.writeText在控制台输出信息,支持多参数
多个参数间使用制表符分隔,并且在最后输入一个换行,
参数支持UTF8/UTF16/ANSI字符串,
该函数可自动打开控制台窗口,而无需事先调用io.open();
注意console.log与console.print指向同一函数
如果是输出调试信息,建议大家使用 console.error 函数
自动打开控制台
调用console.log函数输出格式化字符串,
格式化语法与string.format相同
读取标准输出缓冲区文本。
可选用参数 @1 指定要读取的缓冲区大小,
如果不指定则自动获取缓冲区长度
设置代码页
应在打开控制台后使用该函数
设置控制台前景色与背景色
参数必须使用 console.color 的成员值
无参数恢复默认颜色
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 的成员值
设置控制台标题,
此函数会打开控制台窗口
显示进度动画
n所有参数都可以省略,状态文本为false关闭动画,
调用console.open,console.log等函数都能自动关闭动画
参数@2只能使用 console.color 的成员值
标准错误输出
标准输入
标准输出
控制台是否启用UTF-8编码,
所有线程设置必须相同,否则会导致重新打开控制台,
如果操作系统为英文环境,控制台启用 UTF-8 可正常显示中文,
此值为 null(默认值) 时由 aardio 自动选择编码(WIN10 以上系统默认开启 UTF-8),
启用这个选项在 WIN10 以下系统可能出现显示不正常的问题,
但有一些程序,例如 Electron 主进程输出默认需要打开此选项
此函数显示一个或多个参数的类型与值
控制台输出字符串并覆盖最后显示的等长字符
如果有多个参数则调用string.format格式化后输出
调用 console.writeText 输出指定颜色文本,
此函数不会自动打开控制台窗口
参数@2、参数@3只能使用 console.color 的成员值
背景色可以省略
直接写入控制台,
参数支持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字节码
重复次数
虚拟键码
扫描码