批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[原创] Windows Terminal 控制类库

本帖最后由 老刘1号 于 2022-7-25 08:37 编辑

GitHub
  1. ```
  2. ___ __, __, _, _ _ _, _  _, _,     _,  _, _, _ ___ __,  _, _,  _,  __, __,
  3.   |  |_  |_) |\/| | |\ | /_\ |     / ` / \ |\ |  |  |_) / \ |   |   |_  |_)
  4.   |  |   | \ |  | | | \| | | | ,   \ , \ / | \|  |  | \ \ / | , | , |   | \
  5.   ~  ~~~ ~ ~ ~  ~ ~ ~  ~ ~ ~ ~~~    ~   ~  ~  ~  ~  ~ ~  ~  ~~~ ~~~ ~~~ ~ ~
  6. ```
  7. 为 *VBS*、*JScript* 而生,由 *VBS* 写就的 *COM* 组件。
  8. 实用且便携的 *Windows Terminal* 控制类,可实现彩色输出、光标控制等功能。
  9. # 浏览
  10. - [中文](Readme_zh.md)
  11. - [英文](Readme.md)
  12. # 开始
  13. ## 环境要求
  14. - 视窗操作系统
  15. - Windows Terminal
  16. ## 安装
  17. 以**管理员权限**运行以下命令:
  18. ```
  19. git clone https://github.com/OldLiu001/TerminalController.vbs.git
  20. cd TerminalController.vbs
  21. regsvr32 TerminalController.wsc
  22. ```
  23. **警告:不要使用右键菜单注册 *TerminalController.wsc* 。**
  24. 使用下列代码创建类的实例:
  25. *VBScript*
  26. ```
  27. Set objTerminalController = CreateObject("Terminal.Controller")
  28. ```
  29. *JScript*
  30. ```
  31. var objTerminalController = new ActiveXObject("Terminal.Controller");
  32. ```
  33. ## 便携
  34. 制作便携版本后,其他用户无需进行上述的安装操作即可使用您的脚本。
  35. ### VBScript
  36. #### 方法1:使用 **“Windows 脚本宿主文件” (WSF)**
  37. 复制脚本 *TerminalController.vbs* 到您脚本所在的文件夹下。
  38. 假设您的脚本的文件名为 *MyScript.vbs* ,使用如下的代码模板:
  39. *Template.wsf*
  40. ```
  41. <job id="MyScript">
  42. <script language="VBScript" src="TerminalController.vbs"/>
  43. <script language="VBScript" src="MyScript.vbs"/>
  44. </job>
  45. ```
  46. 将其放置到您脚本所在的文件夹下。
  47. 或将脚本和类库都嵌入单个 *WSF* 中:
  48. *Template_Embedded.wsf*
  49. ```
  50. <job id="MyScript">
  51. <script language="VBScript">
  52. ' 此处写 "TerminalController.vbs" 文件的内容
  53. </script>
  54. <script language="VBScript">
  55. ' 此处写 "MyScript.vbs" 文件的内容
  56. </script>
  57. </job>
  58. ```
  59. 当然,您可以只将必要的部分嵌入 *WSF* 中,此处不再赘述。
  60. 创建类的实例:
  61. ```
  62. Set objTerminalController = New TerminalController
  63. ```
  64. #### 方法2:使用 **“ExecuteGlobal”**
  65. 复制脚本 *TerminalController.vbs* 到您脚本所在的文件夹下。
  66. 将下列代码添加至脚本末尾:
  67. ```
  68. Sub Import(strFileName)
  69. With CreateObject("Scripting.FileSystemObject")
  70. ExecuteGlobal .OpenTextFile( _
  71. .GetParentFolderName( _
  72. .GetFile(WScript.ScriptFullName)) & _
  73. "\" & strFileName).ReadAll
  74. End With
  75. End Sub
  76. ```
  77. 在脚本开头导入类库:
  78. ```
  79. Import "TerminalController.vbs"
  80. ```
  81. 创建类的实例:
  82. ```
  83. Set objTerminalController = New TerminalController
  84. ```
  85. #### 方法3: 将类库嵌入脚本中
  86. 将脚本 *TerminalController.vbs* 的内容添加至您的脚本末尾。
  87. 创建类的实例:
  88. ```
  89. Set objTerminalController = New TerminalController
  90. ```
  91. ### JScript
  92. 假设您的脚本名为 *MyScript.js* 。
  93. 类似 *VBScript* ,您可使用下列代码模板:
  94. *Template.wsf*
  95. ```
  96. <job id="MyScript">
  97. <script language="VBScript" src="TerminalController.vbs"/>
  98. <script language="VBScript">
  99. Function GenerateObject(ByVal strClassName)
  100. Set GenerateObject = EVal("New " & strClassName)
  101. End Function
  102. </script>
  103. <script language="JScript" src="MyScript.js" />
  104. </job>
  105. ```
  106. *Template_Embedded.wsf*
  107. ```
  108. <job id="MyScript">
  109. <script language="VBScript">
  110. ' 此处写 "TerminalController.vbs" 文件的内容
  111. </script>
  112. <script language="VBScript">
  113. Function GenerateObject(ByVal strClassName)
  114. Set GenerateObject = EVal("New " & strClassName)
  115. End Function
  116. </script>
  117. <script language="JScript">
  118. // 此处写 "MyScript.js" 文件的内容
  119. </script>
  120. </job>
  121. ```
  122. 创建类的实例:
  123. ```
  124. var objTerminalController = GenerateObject("TerminalController");
  125. ```
  126. ## 用法
  127. 首先设置处理输出的回调函数。
  128. 可直接使用下列代码:
  129. *VBScript*
  130. ```
  131. Function Printer(ByVal strControlSequence)
  132. WScript.StdOut.Write strControlSequence
  133. End Function
  134. objTerminalController.SetPrinter GetRef("Printer")
  135. ```
  136. *JScript*
  137. ```
  138. objTerminalController.SetPrinter(function (strControlSequence) {
  139. WScript.StdOut.Write(strControlSequence);
  140. });
  141. ```
  142. 然后可以使用下列的若干方法控制终端:
  143. |名称|参数|等价控制序列|描述|
  144. |:----|:----|:----|:----|
  145. |SaveCursorPosition|-|Chr(27) & "7"|储存光标位置|
  146. |RestoreCursorPosition|-|Chr(27) & "8"|恢复光标位置|
  147. |HideCursor|-|Chr(27) & "[?25l"|隐藏光标|
  148. |ShowCursor|-|Chr(27) & "[?25h"|显示光标|
  149. |SaveScreen|-|Chr(27) & "[?1049h"|保存屏幕|
  150. |RestoreScreen|-|Chr(27) & "[?1049l"|恢复屏幕|
  151. |ClearScreen|-|Chr(27) & "[2J"|清除屏幕|
  152. |LimitScoll|lngTop, lngBottom|Chr(27) & "[" & lngTop & ";" & lngBottom & "r"|限制滚动|
  153. |ReleseScoll|-|Chr(27) & "[r"|解除滚动限制|
  154. |MoveCursorToTopLeft|-|Chr(27) & "[H"|将光标移动至终端左上角|
  155. |MoveCursorTo|lngRow, lngColumn|Chr(27) & "[" & lngRow & ";" & lngColumn & "H"|将光标移动至指定位置|
  156. |MoveCursorToRow|lngRow|Chr(27) & "[" & lngRow & "H"|将光标移动至指定行|
  157. |MoveCursorToColumn|lngColumn|Chr(27) & "[" & lngColumn & "G"|将光标移动至指定列|
  158. |MoveCursorUp|lngCount|Chr(27) & "[" & lngCount & "A"|光标上移若干行|
  159. |MoveCursorDown|lngCount|Chr(27) & "[" & lngCount & "B"|光标下移若干行|
  160. |MoveCursorLeft|lngCount|Chr(27) & "[" & lngCount & "D"|光标左移若干字符|
  161. |MoveCursorRight|lngCount|Chr(27) & "[" & lngCount & "C"|光标右移若干字符|
  162. |SetTextStyle|strTextStyle|Chr(27) & "[" & strTextStyle & "m"|设置文本类型|
  163. |SetTextColor|strForeground, strBackground|Chr(27) & "[" & strForeground & ";" & strBackground & "m"|设置文本颜色|
  164. |ResetTextAttributes|-|Chr(27) & "[0m"|重置文本属性|
  165. 也有一些属性,可以获取终端的信息:
  166. |名称|类型|描述|
  167. |:----|:----|:----|
  168. |RowLength|Long|终端的总列数|
  169. |ColumnLength|Long|终端的总行数|
  170. # 参考
  171. 匈牙利命名:*lng* **Long**, *str* **String**, *obj* **Object**, *arr* **Array**.
  172. 颜色可选值:黑 *Black*, 红 *Red*, 绿 *Green*, 黄 *Yellow*, 蓝 *Blue*, 品红 *Magenta*, 青 *Cyan*, 白 *White*, 亮黑 *BrightBlack*, 亮红 *BrightRed*, 亮绿 *BrightGreen*, 亮黄 *BrightYellow*, 亮蓝 *BrightBlue*, 亮品红 *BrightMagenta*, 亮青 *BrightCyan*, 亮白 *BrightWhite*, 默认 *Default*.
  173. 文本类型可选值:常规 *Normal*, 粗体 *Bold*, 暗淡 *Dim*, 斜体 *Italic*, 下划线 *Underline*, 闪烁 *Blink*, 反色 *Reverse*, 隐藏 *Invisible*, 删除线 *Strikeout*.
  174. # 示例
  175. - [Colors.vbs](Examples/Colors.vbs) - 测试所有颜色 (VBScript)
  176. - [Styles.wsf](Examples/Styles.wsf) - 测试所有文本类型 (VBScript)
  177. - [Rain.vbs](Examples/Rain.vbs) - 代码雨特效 (VBScript)
  178. - [Startup.js](Examples/Startup.js) - Windows 2000 启动特效 (JScript)
  179. - [ConwayLife.wsf(TODO)](Examples/ConwayLife.wsf) - 康威生命游戏 (JScript)
  180. - [LangtonAnt.js(TODO)](Examples/LangtonAnt.js) - 兰顿蚂蚁 (JScript)
  181. # 参照
  182. - [writing-a-tui-in-bash](https://github.com/dylanaraps/writing-a-tui-in-bash)
  183. - [color.js](https://github.com/Marak/colors.js)
  184. - [vt510](https://vt100.net/docs/vt510-rm/contents.html)
复制代码
2

评分人数

老刘的博客:https://OldLiu.CnBlogs.com/

厉害                       .......................

QQ 20147578

TOP

返回列表