# console 库模块帮助文档

## console 成员列表 <a id="console" href="#console">&#x23;</a>

控制台扩展函数库  
Win10 以上系统控制台支持以下快捷键:  
 Alt + Enter 切换全屏  
Ctrl + Shift + 加号/减号 调整透明度

### console.askYesNo("按 Y/Enter 鍵繼續,按 N/Esc 鍵取消") <a id="console.askYesNo" href="#console.askYesNo">&#x23;</a>
等待用户按 Y 或 N 键

### console.assert(condition,errorMessage) <a id="console.assert" href="#console.assert">&#x23;</a>
控制台断言函数。  
如果 @condition 不为真则在控制台打印错误信息 errorMessage 并暂停等待按键，  
用户按键后抛出空异常（可被捕获但默认没有报错对话框）。

### console.attach(进程ID) <a id="console.attach" href="#console.attach">&#x23;</a>
GUI 程序（aardio 工程属性 » 界面系统 设为 `win`）附加到指定进程控制台。  
参数 @1 可选指定目标进程 ID，默认值为 -1 （表示附加到父进程）。  
失败时返回 null，成功返回 true。  

附加控制台成功后可调用 ::Kernel32.FreeConsole 函数撤消附加。  
每个进程最多只能有一个控制台，已创建独立控制台后附加其他控制台会失败。  
编译为控制台程序时不需要调用此函数，启动时自动附加父进程控制台。  
注意调用 process 对象的 ctrlEvent 函数也会临时释放与附加控制台。  

注意：  
1. 自 CMD 交互窗口启动 GUI 程序则不等待程序结束（仅等待用户输入回车键）。  
这种模式下调用 pause 命令或 console.pause 会出现错乱。  
2. 自批处理（*.bat,*.cmd ）启动 GUI 程序会等待程序结束（不会额外等待回车键）。  
这种模式下可正常处理控制台按钮，并正常调用 pause 命令或 console.pause 函数。  
因此 GUI 程序如果希望同时提供命令行启动入口，应当额外提供 bat 或 cmd 作为启动入口。  
而不仅仅是通过区分启动参数打开并尝附加到父控制台。

### console.box(列,行,终止列,终止行,背景色,边框标题) <a id="console.box" href="#console.box">&#x23;</a>
在控制台画一个色块,边框标题可省略,  
参数@1,@2省略则自动居中  
返回列,行,终止列,终止行

### console.choice(items,title) <a id="console.choice" href="#console.choice">&#x23;</a>
显示菜单。。  
参数 @1 必须指定非空数组。  
参数 @2 可选用一个字符串自定义输入提示。

### console.choice2(items,color) <a id="console.choice2" href="#console.choice2">&#x23;</a>
显示菜单。  
参数 @1 必须指定非空数组。  
参数 @2 可选用 console.color 命名空间的颜色值指定选中项颜色。  
按方向键选择项目，回车键确认选项，ESC 键取消。

### console.clearInputBuffer() <a id="console.clearInputBuffer" href="#console.clearInputBuffer">&#x23;</a>
刷新控制台输入缓冲区  
丢弃缓冲区的所有输入

### console.clearScreen <a id="console.clearScreen" href="#console.clearScreen">&#x23;</a>
清屏

### console.clearScreen(startX,startY,endX,endY) <a id="console.clearScreen" href="#console.clearScreen">&#x23;</a>
可选指定清屏的开始位置与结束位置。  
开始位置之前的输出保持不变，仅清除指定范围内的输出。  
不指定参数则清除所有输入。  

- 参数 @startX,@ystartY 指定开始行号列号，省略则为 0,0。  
可用 -1 表示行号或列号。  

- 参数 @endX,@endY 指定结束行号列号，省略则为全部缓冲区。  
可用 -1 表示行号或列号。  
endX 为 -2 表示窗口宽度，endY 为 -2 则表示直到可见窗口视图底部。

### console.close() <a id="console.close" href="#console.close">&#x23;</a>
关闭控制台

### console.dump <a id="console.dump" href="#console.dump">&#x23;</a>
显示变量的值,支持多参数

### console.dump(comObj) <a id="console.dump" href="#console.dump">&#x23;</a>
参数 @1 指定 COM 对象，且无其他参数，  
则在控制台输出调用 com.DumpTypeInfo 函数返回的类型信息。  
调用 com.tlbDoc.dump 函数可打印 COM 对象更详细的类型库信息

### console.dump(comObj,enumType) <a id="console.dump" href="#console.dump">&#x23;</a>
参数 @1 指定 COM 对象，参数 @2 指定枚举类型名，  
在控制台输出该枚举类型的所有名值对。  

通常枚举名值对也是 COM 常量名值对，  
可以使用列举的枚举名字（不用指定枚举类型名）  
作为 COM 对象的成员名获取枚举值

### console.dump(value,...) <a id="console.dump" href="#console.dump">&#x23;</a>
在控制台显示普通 table,string,number 等类型的值。  
table 对象使用 table.tostring 转换为文本后输出。  
table 的成员函数显示为 null，改用 console.varDump 可查看成员函数地址。

### console.dumpFile(文件路径) <a id="console.dumpFile" href="#console.dumpFile">&#x23;</a>
输出参数 @1 指定文件路径的文件内容

### console.dumpJson(变量) <a id="console.dumpJson" href="#console.dumpJson">&#x23;</a>
将对像转换为格式化的 JSON 文本并输出到控制台  
对象如果包含数值索引自1开始的顺序数组成员则转换为 JSON 数组  
JSON 数组会忽略其他索引不在数组范围内的成员

### console.dumpTable(表对象) <a id="console.dumpTable" href="#console.dumpTable">&#x23;</a>
如果参数 @1 传入字符串或 buffer，转换为字节码数组再输出。  

如果参数 @1 传入表参数,  
使用 ..util.table.tostring 函数格式化为文本然后输出到控制台。  
仅转换表包含的文本、数值、布尔值、嵌套表对象,  
小数精度最大为 6 位、并自动清除小数尾部多余的 0,  
如果表定义了 tostring 元方法、则转换为字符串  
忽略其他类型,忽略循环引用的表  
如果输出表的数组成员，则忽略非数组成员。  

console.dumpTable 输出时对表的信息进行了精简，没输出的数据不是丢了。  
console.dump, console.varDump 输出的信息更全，但也不是所有对象都能打印出来

### console.enabled <a id="console.enabled" href="#console.enabled">&#x23;</a>
是否在当前线程禁用 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 等交互类函数。

### console.eraseLine() <a id="console.eraseLine" href="#console.eraseLine">&#x23;</a>
清除当前行。  
可选指定要在当前行输出的一个或多个参数

### console.eraseToEndOfLine() <a id="console.eraseToEndOfLine" href="#console.eraseToEndOfLine">&#x23;</a>
清除当前输入光标到行尾的所有字符  
注意用‘\r’虽然能回退光标到行首，但并不擦除已输出的字符

### console.error(错误信息或对象) <a id="console.error" href="#console.error">&#x23;</a>
使用标准错误输出流（io.stderr）输出，可以重定向，  
可添加任意个参数，所有参数也转换为字符串以后输出。  
如果参数是表对象，则调用 table.tostring 序列化后输出。  
如果不指定参数 @1 （null值）则直接忽略本次调用（不输出任何参数）。  

在开发环境中会自动打开控制台以红色字体输出参数，并输出当前调用栈信息。  
发布后的程序不会自动打开控制台，不会输出调用栈信息。

### console.errorPause(错误信息或对象) <a id="console.errorPause" href="#console.errorPause">&#x23;</a>
自动打开控制台窗口，调用 console.error 输出错误信息（或表对象的值），  
之后暂停等待按键。  

支持任意个参数，参数用法请参考 console.error 。

### console.expect(actual, expected, testName) <a id="console.expect" href="#console.expect">&#x23;</a>
用于检测测试用例返回值并打印结果。  
- 参数 @actual 指定实际的值。  
- 参数 @expected 指定期望的的值。  
- 参数 @testName 指定测试用例标题。  

使用恒等操作符比较 actual 与 expected。  
如果不相等则序列化为 JSON 然后进行比较。  

测试成功返回 true。  
执行 console.pause 或 console.more 函数  
时如果测试成功或失败计数器不为零时会打印测试小结（并清零测试计数器）。

### console.fail() <a id="console.fail" href="#console.fail">&#x23;</a>
此函数调用 console.log 输出所有参数，并将字体设为红色。  

通常用于表示执行失败或消极结果，与 console.success 相对。  
与 console.error 的区别是 console.fail 不会打印调用栈。  

有参数自动打开控制台，无任何参数时不会自动打开控制台。

### console.fullscreen() <a id="console.fullscreen" href="#console.fullscreen">&#x23;</a>
控制台窗口全屏切换

### console.getCodePage() <a id="console.getCodePage" href="#console.getCodePage">&#x23;</a>
获取输入代码页,输出代码页

### console.getCursorInfo() <a id="console.getCursorInfo" href="#console.getCursorInfo">&#x23;</a>
返回光标信息,  
用法请参考此函数源码

### console.getErrorHandle() <a id="console.getErrorHandle" href="#console.getErrorHandle">&#x23;</a>
错误输出句柄

### console.getInputHandle() <a id="console.getInputHandle" href="#console.getInputHandle">&#x23;</a>
标准输入句柄

### console.getKey() <a id="console.getKey" href="#console.getKey">&#x23;</a>
等待并读取控制台按键，并返回虚拟键码。  
程序退出或控制台关闭返回 null 。

### console.getNumber( "请输入数值:" ) <a id="console.getNumber" href="#console.getNumber">&#x23;</a>
读取用户输入的数值,  
如果用户输入错误的数值则显示错误提示并重新读取输入直到成功。  
可选用参数@2限定最小有效数值。  
可选用参数 @3 限定最大有效数值。

### console.getOutputHandle() <a id="console.getOutputHandle" href="#console.getOutputHandle">&#x23;</a>
标准输出句柄

### console.getPassword() <a id="console.getPassword" href="#console.getPassword">&#x23;</a>
读取密码  
可选使用参数一指定控制台回显掩码,默认显示星号

### console.getPos() <a id="console.getPos" href="#console.getPos">&#x23;</a>
返回光标坐标

### console.getScreenBufferInfo() <a id="console.getScreenBufferInfo" href="#console.getScreenBufferInfo">&#x23;</a>
返回屏幕缓冲区信息

### console.getSize() <a id="console.getSize" href="#console.getSize">&#x23;</a>
返回控制台屏幕缓冲区每行可输入的字符数,  
以及可输入的字符行数

### console.getText( "请输入文本:" ) <a id="console.getText" href="#console.getText">&#x23;</a>
此函数内部调用 io.getText 自控制台读取用户输入,  
可选在参数 @2 中指定指定接收文本的缓冲区大小。  
此函数不调用 io.stdin.read 等标准输入函数，而是直接自控制台读取文本。

### console.getTextAttribute() <a id="console.getTextAttribute" href="#console.getTextAttribute">&#x23;</a>
获取控制台文本颜色,  
返回颜色值为 背景色 * 0x10 + 文本颜色

### console.getTitle() <a id="console.getTitle" href="#console.getTitle">&#x23;</a>
获取控制台标题

### console.getWindow() <a id="console.getWindow" href="#console.getWindow">&#x23;</a>
返回控制台窗口句柄  
使用此函数可判断当前是否已打开控制台窗口;

### console.getch() <a id="console.getch" href="#console.getch">&#x23;</a>
读取输入字节码,中文字返回两个字节码  
控制台不回显字符

### console.getche() <a id="console.getche" href="#console.getche">&#x23;</a>
读取输入字符  
控制台回显字符

### console.hex(data) <a id="console.hex" href="#console.hex">&#x23;</a>
以 16 进制输出参数 @data 指定的字符串或缓冲区中的所有字节码。

### console.hex(title,data,prefix) <a id="console.hex" href="#console.hex">&#x23;</a>
以明文输出参数 @title。  
以 16 进制输出参数 @data 指定的字符串或缓冲区中的所有字节码。  
可选用 @prefix 指定 16 进制编码前缀符号。

### console.isCursorVisible() <a id="console.isCursorVisible" href="#console.isCursorVisible">&#x23;</a>
控制台当前是否显示光标

### console.isOpened() <a id="console.isOpened" href="#console.isOpened">&#x23;</a>
是否已显示控制台窗口。

### console.kbHit() <a id="console.kbHit" href="#console.kbHit">&#x23;</a>
检测键盘有没有输入

### console.kbRead() <a id="console.kbRead" href="#console.kbRead">&#x23;</a>
读取用户按键返回keyEvent对象  

[返回对象:consoleKbeventObject](#consoleKbeventObject)

### console.kbRead(true) <a id="console.kbRead" href="#console.kbRead">&#x23;</a>
等待用户按任意键并返回keyEvent对象(不包含释放按键事件)

### console.log() <a id="console.log" href="#console.log">&#x23;</a>
调用 console.writeText 在控制台输出信息，支持多参数。  
参数为纯数组则序列化并输出值，其他参数调用 tostring 转为字符串输出。  
多个参数间输出时用制表符分隔，并且在最后输入一个换行。  
此函数必须先导入 console 库才能使用。  

参数支持 UTF8/UTF16/ANSI 字符串，  
二进制或非 UTF8 或系统 ANSI 编码的字符串请改用 console.hex 函数。  

该函数可自动打开控制台窗口,而无需事先调用 console.open 。  
注意 console.log 与 console.print 指向同一函数。  
如果是输出错误信息，请改用 console.error 函数。

### console.logPause() <a id="console.logPause" href="#console.logPause">&#x23;</a>
调用 console.log 函数输入所有参数,  
然后调用 console.pause 函数暂停

### console.modifyMode(输入输出句柄,移除模式,添加模式) <a id="console.modifyMode" href="#console.modifyMode">&#x23;</a>
设置控制台的显示模式  
参数用法参考 WINAPI SetConsoleMode  
参数@1如果省略则默认为标准输出句柄  
成功返回当前模式,失败返回null

### console.more <a id="console.more" href="#console.more">&#x23;</a>
等待并在按任意键以后继续，用于在控制台分页输出时等待按键。

### console.more(分页大小,是否清屏,提示文本) <a id="console.more" href="#console.more">&#x23;</a>
- 省略参数  @1 则参数默认为 1 。  
- 如果参数 @2 为 true，按任意键以后清除控制台已显示的内容。  
- 可选用参数 @2 指定提示文本。

### console.open() <a id="console.open" href="#console.open">&#x23;</a>
打开控制台窗口,  
如果控制台窗口已打开,该函数不进行任何操作,  
如果参数为 true 则将 console.utf8 设为true,  
请参考 console.utf8 的说明  

此函数重定向 msvcrt.dll 定义的 stdin,stdout,stderr 到控制台。  

如果编译为 GUI 程序并希望支持命令行入口。  
建议提供 cmd 或 bat 文件作为入口，详见 console.attach 函数说明。

### console.pause <a id="console.pause" href="#console.pause">&#x23;</a>
暂停控制台，等待用户按任意键继续。  
如果非控制台程序附加到 CMD 控制台，要避免使用此函数以防争抢键盘输入

### console.pause(按键后是否关闭控制台,提示) <a id="console.pause" href="#console.pause">&#x23;</a>
返回用户按键键码

### console.pausedOnce <a id="console.pausedOnce" href="#console.pausedOnce">&#x23;</a>
如果执行了 console.pause 函数并且在之后没有执行过 console 库输出函数则返回 true。  
执行 console.log, console.dump, console.writeText 等输出函数会将 pausedOnce 属性设为 null 。  

此属性由 console 库自动维护，调用代码不应修改些属性。

### console.peek() <a id="console.peek" href="#console.peek">&#x23;</a>
测试键盘有没有输入  
有则读取并返回keyEvent对象,否则返回空  

[返回对象:consoleKbeventObject](#consoleKbeventObject)

### console.print("字符串参数") <a id="console.print" href="#console.print">&#x23;</a>
调用 console.writeText 在控制台输出信息，支持多参数。  
参数为纯数组则序列化并输出值，其他参数调用 tostring 转为字符串输出。  
多个参数间使用制表符分隔，并且在最后输入一个换行,  
参数支持 UTF8/UTF16/ANSI 字符串，  
该函数可自动打开控制台窗口;  
注意 console.log 与 console.print 指向同一函数  
如果是输出调试信息,建议大家使用 console.error 函数

### console.printf("%s", ) <a id="console.printf" href="#console.printf">&#x23;</a>
自动打开控制台，  
并调用 console.log 函数输出格式化字符串,  
格式化语法与string.format相同

### console.read(title,length) <a id="console.read" href="#console.read">&#x23;</a>
此函数为 console.getText 函数的别名。  
可选用参数 title 指定输入提示，可选用参数 @length 指定接收文本的缓冲区大小。

### console.readOutputCharacter() <a id="console.readOutputCharacter" href="#console.readOutputCharacter">&#x23;</a>
读取标准输出缓冲区文本。  
可选用参数 @1 指定要读取的缓冲区大小，  
如果不指定则自动获取缓冲区长度

### console.repeat(repCount,repStr) <a id="console.repeat" href="#console.repeat">&#x23;</a>
将字符串 repStr 重复 repCount 次后输出

### console.setCodePage(输入代码页,输出代码页) <a id="console.setCodePage" href="#console.setCodePage">&#x23;</a>
设置代码页  
可在打开控制台后使用该函数修改输入输入代码页

### console.setColor(文本颜色,背景色) <a id="console.setColor" href="#console.setColor">&#x23;</a>
设置控制台文本颜色与背景色。  
颜色颜色参数可指定 console.color 命名空间的颜色数值或颜色名称（字符串值）。  
示例：`console.setColor("red","darkBlue")`  
无参数恢复默认颜色

### console.setCtrlHandlerThread(hander,add,owner) <a id="console.setCtrlHandlerThread" href="#console.setCtrlHandlerThread">&#x23;</a>

```aardio
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 可阻止控制台退出  

在此函数内不应再使用任何控制台函数*/  
});
```

### console.setCursorInfo(info) <a id="console.setCursorInfo" href="#console.setCursorInfo">&#x23;</a>
修改光标信息,  
用法请参考此函数源码

### console.setCursorVisible(visible) <a id="console.setCursorVisible" href="#console.setCursorVisible">&#x23;</a>
设置控制台是否显示光标

### console.setLoadingDots(动画字符数组,是否显示在尾部,动画间隔毫秒数) <a id="console.setLoadingDots" href="#console.setLoadingDots">&#x23;</a>
指定showLoading函数使用的默认动画字符数组  
除参数@1必须指定之外，其他参数可选

### console.setPos(列,行) <a id="console.setPos" href="#console.setPos">&#x23;</a>
设置光标坐标

### console.setTextAttribute <a id="console.setTextAttribute" href="#console.setTextAttribute">&#x23;</a>
设置文本颜色与背景色,  
设置整个窗口的背景色请使用 console.setColor;

### console.setTextAttribute(文本颜色,背景色) <a id="console.setTextAttribute" href="#console.setTextAttribute">&#x23;</a>
颜色参数可指定 console.color 命名空间的颜色数值或颜色名称（字符串值）。  
无参数恢复默认颜色

### console.setTextAttribute(颜色) <a id="console.setTextAttribute" href="#console.setTextAttribute">&#x23;</a>
颜色值可以设为 背景色 * 0x10 + 文本颜色,  
也可直接使用 console.color 的成员值 （数值）或名称（字符串值）作为参数

### console.setTextColor(文本颜色,背景色) <a id="console.setTextColor" href="#console.setTextColor">&#x23;</a>
设置文本颜色，此函数为 setTextAttribute 函数的别名。  
颜色参数可指定 console.color 命名空间的颜色数值或颜色名称（字符串值）。  
示例：`console.setTextColor("red","darkBlue")`  
无参数恢复默认颜色

### console.setTitle("字符串参数") <a id="console.setTitle" href="#console.setTitle">&#x23;</a>
设置控制台标题,  
此函数会打开控制台窗口

### console.showLoading <a id="console.showLoading" href="#console.showLoading">&#x23;</a>
显示进度动画

### console.showLoading(状态提示文本,动画颜色) <a id="console.showLoading" href="#console.showLoading">&#x23;</a>
所有参数都可以省略,状态文本参数为 false 关闭动画,  
调用 console 库的其他函数基本都会自动停止动画。  
参数 @2 只能使用 console.color 的成员值。

### console.status(condition,title,success,error,detail) <a id="console.status" href="#console.status">&#x23;</a>
在控制台高亮显示成功或失败状态。  
如果参数 @condition 的逻辑值为 true 则以绿色输出 title,success，  
否则以红色输出 title,error 。  

所有参数可选。  
success 默认值为 " ✓ 成功" ，参数 @error 的默认值为" ✗ 失败"。  
可选用参数 @detail 指定附加输出的详细信息。  
所有参数为 null 则输出 " ✗ 失败"

### console.stderr <a id="console.stderr" href="#console.stderr">&#x23;</a>
标准错误输出  

[返回对象:ioFileObject](https://www.aardio.com/zh-cn/doc/library-reference/io/_.html#ioFileObject)

### console.stdin <a id="console.stdin" href="#console.stdin">&#x23;</a>
标准输入  

[返回对象:ioFileObject](https://www.aardio.com/zh-cn/doc/library-reference/io/_.html#ioFileObject)

### console.stdout <a id="console.stdout" href="#console.stdout">&#x23;</a>
标准输出  

[返回对象:ioFileObject](https://www.aardio.com/zh-cn/doc/library-reference/io/_.html#ioFileObject)

### console.success() <a id="console.success" href="#console.success">&#x23;</a>
此函数调用 console.log 输出所有参数，并将字体设为绿色。  
通常用于表示执行成功或积极结果，与 console.fail 相对。  

有参数自动打开控制台，无任何参数时不会自动打开控制台。

### console.test(condition,testName,detail) <a id="console.test" href="#console.test">&#x23;</a>
用于打印测试用例执行结果。  
- 参数 @condition 指定要检测的条件值，真值为成功。  
- 参数 @testName 指定测试用例标题。  
- 可选参数 @detail 可用于指定详情或附加信息  

测试成功返回 true。  
执行 console.pause 或 console.more 函数  
时如果测试成功或失败计数器不为零时会打印测试小结（并清零测试计数器）。

### console.updateLine() <a id="console.updateLine" href="#console.updateLine">&#x23;</a>
原地更新当前行的文本。  
参数 @1 指定字符串，指定多个参数则用 string.format 格式化。  
如果光标在当前行开始位置并且不是首行，则替换上一行文本。

### console.utf8 <a id="console.utf8" href="#console.utf8">&#x23;</a>
控制台是否启用UTF-8编码,  
所有线程设置必须相同,否则会导致重新打开控制台,  
如果操作系统为英文环境,控制台启用 UTF-8 可正常显示中文,  
此值为 null（默认值） 时由 aardio 自动选择编码（ Win10 1709 以及之后的系统默认开启 UTF-8）,  
启用这个选项在 WIN10 以下系统可能出现显示不正常的问题。

### console.varDump(变量) <a id="console.varDump" href="#console.varDump">&#x23;</a>
此函数显示一个或多个参数的类型与值

### console.write() <a id="console.write" href="#console.write">&#x23;</a>
调用 console.writeText 在控制台输出信息，支持多参数。  
与 console.writeText 不同, console.write 可自动打开控制台而无需先调用 console.open 。  
与 console.writeText 不同, console.write 不会在参数间添加制表符，也不会在尾部添加换行。

### console.writeBack() <a id="console.writeBack" href="#console.writeBack">&#x23;</a>
控制台输出字符串并覆盖最后显示的等长字符  
如果有多个参数则调用string.format格式化后输出

### console.writeColorText <a id="console.writeColorText" href="#console.writeColorText">&#x23;</a>
调用 console.writeText 输出指定颜色文本,  
此函数不会自动打开控制台窗口

### console.writeColorText(文本,文本颜色,背景色) <a id="console.writeColorText" href="#console.writeColorText">&#x23;</a>
颜色颜色参数可指定 console.color 命名空间的颜色数值或颜色名称（字符串值）。  
示例：`console.writeColorText("文本","red","darkBlue")`   
背景色可以省略

### console.writeText() <a id="console.writeText" href="#console.writeText">&#x23;</a>
直接写入控制台，  
参数支持 UTF8 / UTF16 / ANSI 编码的字符串，  
支持 1 个或多个参数，但遇到null参数会停止输出后面的参数,  
注意这个函数不会自动打开控制台，  
此函数不调用io.stdout.write,io.print等标准输出函数  
并且可以支持更多的Unicode字符

## 全局对象 成员列表 <a id="global" href="#global">&#x23;</a>

### afterConsoleOpen <a id="afterConsoleOpen" href="#afterConsoleOpen">&#x23;</a>

```aardio
 if(::Kernel32.GetConsoleWindow()){  

 }  
 ..subscribe("afterConsoleOpen",function(){  
 	/*console 库打开控制台执行此回调*/  
} );
```

## console.color 成员列表 <a id="console.color" href="#console.color">&#x23;</a>

### console.color.	black <a id="console.color.	black" href="#console.color.	black">&#x23;</a>
0; //黑色

### console.color.blue <a id="console.color.blue" href="#console.color.blue">&#x23;</a>
9; //蓝色

### console.color.cyan <a id="console.color.cyan" href="#console.color.cyan">&#x23;</a>
0xB; //青色

### console.color.darkBlue <a id="console.color.darkBlue" href="#console.color.darkBlue">&#x23;</a>
1; //暗蓝色

### console.color.darkCyan <a id="console.color.darkCyan" href="#console.color.darkCyan">&#x23;</a>
3; //暗青色

### console.color.darkGray <a id="console.color.darkGray" href="#console.color.darkGray">&#x23;</a>
8; //深灰色

### console.color.darkGreen <a id="console.color.darkGreen" href="#console.color.darkGreen">&#x23;</a>
2; //暗绿色

### console.color.darkMagenta <a id="console.color.darkMagenta" href="#console.color.darkMagenta">&#x23;</a>
5; //暗紫色

### console.color.darkRed <a id="console.color.darkRed" href="#console.color.darkRed">&#x23;</a>
4; //暗红色

### console.color.darkYellow <a id="console.color.darkYellow" href="#console.color.darkYellow">&#x23;</a>
6; //暗黄色

### console.color.gray <a id="console.color.gray" href="#console.color.gray">&#x23;</a>
7; //灰色

### console.color.green <a id="console.color.green" href="#console.color.green">&#x23;</a>
0xA; //绿色

### console.color.magenta <a id="console.color.magenta" href="#console.color.magenta">&#x23;</a>
0xD; //紫色

### console.color.red <a id="console.color.red" href="#console.color.red">&#x23;</a>
0xC; //红色

### console.color.white <a id="console.color.white" href="#console.color.white">&#x23;</a>
0xF //白色

### console.color.yellow <a id="console.color.yellow" href="#console.color.yellow">&#x23;</a>
0xE; //黄色

## consoleKbeventObject 成员列表 <a id="consoleKbeventObject" href="#consoleKbeventObject">&#x23;</a>

### consoleKbeventObject.bKeyDown <a id="consoleKbeventObject.bKeyDown" href="#consoleKbeventObject.bKeyDown">&#x23;</a>
按键是否释放

### consoleKbeventObject.isCapsLkOn <a id="consoleKbeventObject.isCapsLkOn" href="#consoleKbeventObject.isCapsLkOn">&#x23;</a>
是否打开大写

### consoleKbeventObject.isEnhanced <a id="consoleKbeventObject.isEnhanced" href="#consoleKbeventObject.isEnhanced">&#x23;</a>
是否扩展键

### consoleKbeventObject.isLeftAltPressed <a id="consoleKbeventObject.isLeftAltPressed" href="#consoleKbeventObject.isLeftAltPressed">&#x23;</a>
是否按下左ALT键

### consoleKbeventObject.isLeftCtrlPressed <a id="consoleKbeventObject.isLeftCtrlPressed" href="#consoleKbeventObject.isLeftCtrlPressed">&#x23;</a>
是否按下左CTRL键

### consoleKbeventObject.isNumLkOn <a id="consoleKbeventObject.isNumLkOn" href="#consoleKbeventObject.isNumLkOn">&#x23;</a>
是否打开NumLk键

### consoleKbeventObject.isRightAltPressed <a id="consoleKbeventObject.isRightAltPressed" href="#consoleKbeventObject.isRightAltPressed">&#x23;</a>
是否按下右ALT键

### consoleKbeventObject.isRightCtrlPressed <a id="consoleKbeventObject.isRightCtrlPressed" href="#consoleKbeventObject.isRightCtrlPressed">&#x23;</a>
是否按下右CTRL键

### consoleKbeventObject.isScrLkOn <a id="consoleKbeventObject.isScrLkOn" href="#consoleKbeventObject.isScrLkOn">&#x23;</a>
是否打开ScrLk键

### consoleKbeventObject.isShiftPressed <a id="consoleKbeventObject.isShiftPressed" href="#consoleKbeventObject.isShiftPressed">&#x23;</a>
是否按下SHIFT键

### consoleKbeventObject.uChar.asciiChar <a id="consoleKbeventObject.uChar.asciiChar" href="#consoleKbeventObject.uChar.asciiChar">&#x23;</a>
ASCII字节码

### consoleKbeventObject.uChar.dwControlKeyState <a id="consoleKbeventObject.uChar.dwControlKeyState" href="#consoleKbeventObject.uChar.dwControlKeyState">&#x23;</a>
控制键状态码

### consoleKbeventObject.uChar.unicodeChar <a id="consoleKbeventObject.uChar.unicodeChar" href="#consoleKbeventObject.uChar.unicodeChar">&#x23;</a>
Unicode字节码

### consoleKbeventObject.wRepeatCount <a id="consoleKbeventObject.wRepeatCount" href="#consoleKbeventObject.wRepeatCount">&#x23;</a>
重复次数

### consoleKbeventObject.wVirtualKeyCode <a id="consoleKbeventObject.wVirtualKeyCode" href="#consoleKbeventObject.wVirtualKeyCode">&#x23;</a>
虚拟键码

### consoleKbeventObject.wVirtualScanCode <a id="consoleKbeventObject.wVirtualScanCode" href="#consoleKbeventObject.wVirtualScanCode">&#x23;</a>
扫描码
