quardCRT从V0.5.0版本开始支持脚本功能。脚本以Python语言的形式加载,可以在脚本中调用quardCRT的API,以实现自动化操作。
打开主界面,点击菜单栏的脚本
,选择运行...
,选择脚本文件,点击打开
即可加载脚本。
以下是一个简单的脚本示例,用于显示quardCRT的版本信息。
import sys
from quardCRT import crt
def main():
# Display quardCRT's version
crt.Dialog.MessageBox("quardCRT version is: " + crt.Version)
if __name__ == '__main__':
main()
quardCRT加载的脚本与通常的Python脚本并无区别,现在我们逐行解释这个脚本。
import sys
:导入sys
模块,用于获取命令行参数。from quardCRT import crt
:导入quardCRT的API。def main():
:定义一个main
函数,用于执行脚本的主要逻辑。# Display quardCRT's version
:注释,用于解释下一行代码的作用。crt.Dialog.MessageBox("quardCRT version is: " + crt.Version)
:调用quardCRT的API,显示一个消息框,显示quardCRT的版本信息。if __name__ == '__main__':
:判断脚本是否作为主程序运行。main()
:调用main
函数,执行脚本的主要逻辑。
quardCRT的API包括以下几个部分:
crt
:quardCRT的主要API。crt.Dialog
:用于显示对话框。crt.Session
:用于管理当前激活的会话。crt.Screen
:用于管理当前激活的屏幕。crt.Window
:用于管理quardCRT的窗口。crt.Arguments
:用于获取命令行参数。crt.Clipboard
:用于操作剪贴板。crt.FileTransfer
:用于操作文件传输。crt.CommandWindow
:用于操作命令窗口。crt.Tab
:用于管理标签页组。
crt
是quardCRT的主要API,包括以下几个部分:
-
crt.GetActiveTab() -> object
:获取当前活动的标签页组。-
返回值:Tab对象。
-
示例:
tab = crt.GetActiveTab()
-
备注:如果当前没有活动的Tab组,则获取第一个Tab组。
-
-
crt.GetLastError() -> object
:获取最后一次发生的错误。-
返回值:Error对象。
-
示例:
error = crt.GetLastError()
-
-
crt.GetLastErrorMessage() -> str
:获取最后一次发生的错误信息。-
返回值:错误信息。
-
示例:
message = crt.GetLastErrorMessage()
-
-
crt.ClearLastError()
:清除最后一次发生的错误。-
示例:
crt.ClearLastError()
-
-
crt.Sleep(milliseconds: int)
:暂停脚本的执行。-
参数:
milliseconds
:暂停的时间,单位为毫秒。
-
示例:
crt.Sleep(1000)
-
-
crt.Cmd(cmd: str, [args:list]) -> str
:执行一个quardCRT的特殊命令。-
参数:
cmd
:命令名称。args
:命令参数列表。
-
返回值:命令执行结果。
-
备注:命令名称和参数列表请参考quardCRT的命令帮助。
-
示例:
result = crt.Cmd("show", ["version"])
-
-
crt.Quit()
:退出quardCRT。-
示例:
crt.Quit()
-
crt.Dialog
:全局对话框对象。crt.Session
:当前会话对象。crt.Screen
:当前屏幕对象。crt.Window
:全局窗口对象。crt.Arguments
:命令行参数对象。crt.Clipboard
:剪贴板对象。crt.FileTransfer
:文件传输对象。crt.ScriptFullName
:当前脚本的完整路径。只读。crt.ActivePrinter
:当前活动的打印机名称。crt.Version
:quardCRT的版本信息。只读。
Dialog
用于显示对话框,全局单例,通过crt对象调用,例如:
dialog = crt.Dialog
包括以下几个部分:
-
Dialog.MessageBox(message: str, [title: str, buttons: int]) -> int
:显示一个消息框。-
参数:
message
:消息内容。title
:消息标题。buttons
:按钮类型。
-
返回值:执行结果。0表示正常,其他值表示异常。
-
备注:按钮类型包括
Dialog.OK
、Dialog.OK | Dialog.Cancel
、Dialog.Abort | Dialog.Retry | Dialog.Ignore
、Dialog.Yes | Dialog.No
等。 -
示例:
result = crt.Dialog.MessageBox("Hello, quardCRT!", "Message", crt.Dialog.OK)
-
-
Dialog.Prompt(prompt: str, name: str, input: str, password: bool) -> str
:显示一个输入框。-
参数:
prompt
:提示内容。name
:输入框名称。input
:输入框默认值。password
:是否密码输入。
-
返回值:输入框的值。如果用户点击取消,则返回空字符串。
-
示例:
value = crt.Dialog.Prompt("Please input your name:", "Name", "", False) password = crt.Dialog.Prompt("Please input your password:", "Password", "", True)
-
-
Dialog.FileOpenDialog(title: str, [buttonLabel: str, directory: str, filter: str]) -> str
:显示一个打开文件对话框。-
参数:
title
:对话框标题。buttonLabel
:按钮标签。directory
:默认目录。filter
:文件过滤器。
-
返回值:选择的文件路径。如果用户点击取消,则返回空字符串。
-
示例:
file = crt.Dialog.FileOpenDialog("Open File", "Open", "", "All Files (*.*)|*.*")
-
-
Dialog.FileSaveDialog(title: str, [buttonLabel: str, directory: str, filter: str]) -> str
:显示一个保存文件对话框。-
参数:
title
:对话框标题。buttonLabel
:按钮标签。directory
:默认目录。filter
:文件过滤器。
-
返回值:选择的文件路径。如果用户点击取消,则返回空字符串。
-
示例:
file = crt.Dialog.FileSaveDialog("Save File", "Save", "", "All Files (*.*)|*.*")
-
Dialog.OK
:确定按钮。只读。Dialog.Cancel
:取消按钮。只读。Dialog.Abort
:中止按钮。只读。Dialog.Retry
:重试按钮。只读。Dialog.Ignore
:忽略按钮。只读。Dialog.Yes
:是按钮。只读。Dialog.No
:否按钮。只读。
Session
用于管理会话,通过crt对象调用或Tab获取,例如:
session = crt.Session # 获取当前会话
tab = crt.GetActiveTab() # 获取当前活动的标签页组
if tab.Number > 0:
session = tab.GetSession(0) # 获取标签页组的第一个会话
包括以下几个部分:
-
Session.Connect(cmd: str) -> int
:连接到一个主机。-
参数:
cmd
:命令。
-
返回值:连接结果。
-
备注:命令格式为
-<type> <arg>
,例如:-telnet <hostname> <port>
-serial <baudRate> <dataBits> <parity> <stopBits> <flowControl> <xEnable>
-localshell <path>
-raw <hostname> <port>
-namepipe <pipeName>
-ssh2 <hostname> <port> <username> <password>
-vnc <hostname> <port> <password>
-s <sessionName>
-clone
-
示例:
result = session.Connect("-ssh2 example.com 22 root 123456")
-
-
Session.Disconnect()
:断开当前会话。-
示例:
session.Disconnect()
-
-
Session.Log(enable: bool)
:启用或禁用日志记录。-
参数:
enable
:是否启用日志记录。
-
示例:
session.Log(True)
-
-
Session.Lock(prompt: str, password: str, lockallsessions: int) -> int
:锁定会话。-
参数:
prompt
:提示内容。password
:密码。lockallsessions
:是否锁定所有会话。
-
返回值:执行结果。
-
示例:
result = session.Lock("Please input your password:", "password", 0)
-
-
Session.Unlock(prompt: str, password: str, lockallsessions: int) -> int
:解锁会话。-
参数:
prompt
:提示内容。password
:密码。lockallsessions
:是否解锁所有会话。
-
返回值:执行结果。
-
示例:
result = session.Unlock("Please input your password:", "password", 0)
-
Session.Connected
:会话是否连接。只读。Session.Locked
:会话是否锁定。只读。Session.Logging
:会话是否启用日志记录。只读。Session.Id
:会话的全局ID。只读。
Screen
用于管理屏幕,通过crt对象调用或Tab获取,例如:
screen = crt.Screen # 获取当前屏幕
tab = crt.GetActiveTab() # 获取当前活动的标签页组
if tab.Number > 0:
screen = tab.GetScreen(0) # 获取标签页组的第一个屏幕
包括以下几个部分:
-
Screen.WaitForString(str: str, timeout: int, bcaseInsensitive: bool) -> str
:等待屏幕出现指定的文本。-
参数:
str
:指定的文本。timeout
:超时时间。bcaseInsensitive
:是否忽略大小写。
-
返回值:匹配的文本。
-
示例:
text = screen.WaitForString("Hello, quardCRT!", 1000, False)
-
-
Screen.WaitForStrings(strlist: list[str], timeout: int, bcaseInsensitive: bool) -> str
:等待屏幕出现指定的文本列表。-
参数:
strlist
:指定的文本列表。timeout
:超时时间。bcaseInsensitive
:是否忽略大小写。
-
返回值:匹配的文本。
-
示例:
text = screen.WaitForStrings(["Hello", "quardCRT"], 1000, False)
-
-
Screen.Send(str: str) -> int
:发送文本到屏幕。-
参数:
str
:发送的文本。
-
返回值:发送的字符数。
-
示例:
count = screen.Send("Hello, quardCRT!")
-
-
Screen.Clear()
:清空屏幕。-
示例:
screen.Clear()
-
-
Screen.Get(row1: int, col1: int, row2: int, col2: int) -> str
:获取屏幕指定区域的文本。-
参数:
row1
:起始行。col1
:起始列。row2
:结束行。col2
:结束列。
-
返回值:指定区域的文本。
-
示例:
text = screen.Get(1, 1, 10, 80)
-
-
Screen.Get2(row1: int, col1: int, row2: int, col2: int) -> str
:获取屏幕指定区域的文本,插入换行符号。-
参数:
row1
:起始行。col1
:起始列。row2
:结束行。col2
:结束列。
-
返回值:指定区域的文本。
-
示例:
text = screen.Get2(1, 1, 10, 80)
-
-
Screen.IgnoreCase(enable: bool)
:启用或禁用忽略大小写。-
参数:
enable
:是否启用忽略大小写。
-
示例:
screen.IgnoreCase(True)
-
-
Screen.Print()
:打印屏幕内容。-
示例:
screen.Print()
-
-
Screen.Shortcut(path: str)
:截屏。-
参数:
path
:截屏保存的路径。
-
示例:
screen.Shortcut("C:\\screenshot.png")
-
-
Screen.SendKeys(keylist: list[str])
:发送组合按键。-
参数:
keylist
:按键列表。
-
示例:
screen.SendKeys(["Ctrl", "Alt", "Del"])
-
-
Screen.Screen_ReadString(strlist: list[str], timeout: int, bcaseInsensitive: bool) -> str
:读取文本数据,直到屏幕出现指定的文本列表。-
参数:
strlist
:指定的文本列表。timeout
:超时时间。bcaseInsensitive
:是否忽略大小写。
-
返回值:读取的文本。
-
示例:
text = screen.Screen_ReadString(["Hello", "quardCRT"], 1000, False)
-
-
Screen.WaitForCursor(row: int, col: int, timeout: int) -> bool
:等待光标移动到指定位置。(暂未实现)-
参数:
row
:指定行。col
:指定列。timeout
:超时时间。
-
返回值:是否成功。
-
示例:
result = screen.WaitForCursor(10, 10, 1000)
-
-
Screen.WaitForKey(keylist: list[str], timeout: int) -> bool
:等待按键输入。(暂未实现)-
参数:
keylist
:按键列表。timeout
:超时时间。
-
返回值:是否成功。
-
示例:
result = screen.WaitForKey(["Enter"], 1000)
-
Screen.Synchronous
:同步模式。Screen.CurrentColumn
:当前光标列。只读。Screen.CurrentRow
:当前光标行。只读。Screen.Rows
:屏幕行数。只读。Screen.Columns
:屏幕列数。只读。Screen.IgnoreCase
:是否忽略大小写。Screen.MatchIndex
:匹配的索引。只读。Screen.Selection
:选择的文本。只读。Screen.Id
:屏幕的全局ID。只读。
Window
用于管理应用窗口,全局单例,通过crt对象调用,例如:
window = crt.Window
包括以下几个部分:
-
Window.Activate()
:激活窗口。-
示例:
window.Activate()
-
-
Window.Show(type: int)
:显示窗口。-
参数:
type
:窗口显示类型。
-
示例:
window.Show(crt.Window.ShowNormal)
-
Window.State
:当前窗口显示类型。Window.Active
:当前窗口是否激活。Window.Hide
:隐藏窗口。只读。Window.ShowNormal
:正常显示窗口。只读。Window.ShowMinimized
:最小化窗口。只读。Window.ShowMaximized
:最大化窗口。只读。
Arguments
用于获取命令行参数,全局单例,通过crt对象调用,例如:
arguments = crt.Arguments
包括以下几个部分:
Arguments.GetArg(index: int) -> str
:获取指定索引的参数。-
参数:
index
:参数索引。
-
返回值:参数值。
-
示例:
arg = arguments.GetArg(0)
-
Arguments.Count
:参数数量。只读。
Clipboard
用于操作剪贴板,全局单例,通过crt对象调用,例如:
clipboard = crt.Clipboard
包括以下几个部分:
Clipboard.Text
:剪贴板文本。只读。
FileTransfer
用于操作文件传输,全局单例,通过crt对象调用,例如:
filetransfer = crt.FileTransfer
包括以下几个部分:
-
FileTransfer.AddToUploadList(path: str)
:添加文件到zmodem上传列表。-
参数:
path
:文件路径。
-
示例:
filetransfer.AddToUploadList("C:\\example.txt")
-
-
FileTransfer.ClearUploadList()
:清空zmodem上传列表。-
示例:
filetransfer.ClearUploadList()
-
-
FileTransfer.ReceiveKermit() -> int
:接收kermit文件。-
返回值:是否成功。
-
示例:
result = filetransfer.ReceiveKermit()
-
-
Filetransfer.SendKermit(path: str) -> int
:发送kermit文件。-
参数:
path
:文件路径。
-
返回值:是否成功。
-
示例:
result = filetransfer.SendKermit("C:\\example.txt")
-
-
FileTransfer.ReceiveXmodem(path: str)
:接收xmodem文件。-
参数:
path
:文件路径。
-
返回值:是否成功。
-
示例:
result = filetransfer.ReceiveXmodem("C:\\example.txt")
-
-
FileTransfer.SendXmodem(path: str) -> int
:发送xmodem文件。-
参数:
path
:文件路径。
-
返回值:是否成功。
-
示例:
result = filetransfer.SendXmodem("C:\\example.txt")
-
-
FileTransfer.ReceiveYmodem() -> int
:接收ymodem文件。-
返回值:是否成功。
-
示例:
result = filetransfer.ReceiveYmodem()
-
-
FileTransfer.SendYmodem(path: str) -> int
:发送ymodem文件。-
参数:
path
:文件路径。
-
返回值:是否成功。
-
示例:
result = filetransfer.SendYmodem("C:\\example.txt")
-
-
FileTransfer.SendZmodem() -> int
:发送zmodem文件。-
返回值:是否成功。
-
示例:
result = filetransfer.SendZmodem()
-
FileTransfer.DownloadFolder
:下载文件夹。
CommandWindow
用于操作命令窗口,全局单例,通过crt对象调用,例如:
commandwindow = crt.CommandWindow
包括以下几个部分:
CommandWindow.Send()
:发送文本到命令窗口。-
示例:
commandwindow.Text = 'Hello, quardCRT!' commandwindow.Send()
-
CommandWindow.SendCharactersImmediately
:是否立即发送字符。CommandWindow.SendToAllSessions
:是否发送到所有会话。CommandWindow.Visible
:命令窗口是否可见。CommandWindow.Text
:命令窗口文本。
Tab
用于管理标签页组,通过crt对象调用,例如:
tab = crt.GetActiveTab() # 获取当前活动的标签页组
包括以下几个部分:
-
Tab.GetScreen(index: int) -> object
:获取标签页组的屏幕。-
参数:
index
:屏幕索引。
-
返回值:Screen对象。
-
示例:
screen = tab.GetScreen(0)
-
-
Tab.GetSession(index: int) -> object
:获取标签页组的会话。-
参数:
index
:会话索引。
-
返回值:Session对象。
-
示例:
session = tab.GetSession(0)
-
-
Tab.Activate(index: int)
:激活标签页组的指定会话。-
参数:
index
:会话索引。
-
示例:
tab.Activate(0)
-
Tab.Number
:标签页组内会话数量。只读。