S-Term FAQ
S-Term主页 http://sterm.smth.edu.cn, http://www.sterm.com
Q: 我下载了控制脚本,解开后一个目录中包含了几个文件,请问怎样使用控制脚本? A: 点击菜单 选项->系统设置,在 设置 Tab的下方,勾上使用系统控制脚本,然后按下面文本框右边的"..."按钮,选择脚本目录中的Control.vbs,这时候 文本框中应该出现了该文件的路径和文件名,文本框上方的关闭对话框时装载脚本也应该被勾上了,此时关闭对话框,如果没出现任何提示,脚本就被加载了。否则会提示文件类型错误或文件未找到。 如果是新版本的S-Term,可看到文本框中写着Script/Control.vbs,表示装载的是sterm.exe目录下的script目录中的control.vbs,如果将脚本拷贝到该目录中了,只需要勾上关闭对话框时装载脚本即可
|
Q: 在有scrollback的时候怎么快速滚屏? A: 按住ctrl滚动鼠标滚轮,或者钩上 系统设置-〉设置中 另一种鼠标滚轮方式,滚动鼠标滚轮直接滚屏,按住ctrl发送上下键
|
Q: 为什么推荐在telnet环境下使用文章下载或精华区下载? A: SSH环境中一行的数据可能被分成多个数据包,没有原子性,因此引起s-term判断什么时候算翻页完成的失误。 当然也有办法解决,但带来的后果是速度下降,比如翻页后等到3秒没有数据送来算完成,这样考几篇文章就需要几分钟,太慢了 在telnet环境中这种情况也有可能出现,但概率非常小,因此推荐在telnet环境中下载 |
Q: 使用SSH连接某些服务器时出现Exceeded Max Packet Length A: 可能是因为服务器使用的是F-SSH一类的商业ssh?或者协议实现与SSH
ietf draft有出入,目前s-term暂时仅支持openSSH,以后会加以改进的
|
Q: 启动S-Term的时候出现Engine Create Error,而且无法使用脚本?或者使用新脚本的时候报错? A: 报告Engine Create Error是因为您的系统不支持Active Script,一般使用Ie4.0以上系统中会自动带有Windows Script Engine 。S-Term最新脚本需要5.0版本以上的Windows Script Engine,如果您安装了Ie5或以上版本,就会自动满足要求。 如果因为种种原因出现了Windows Script Engine方面的问题,一般可以通过下面两种方法解决 1、升级Ie到5.0以上 2、如果觉得升级ie太麻烦,可以去http://www.microsoft.com/downloads/details.aspx?FamilyId=C717D943-7E4B-4622-86EB-95A22B832CAA&displaylang=en 下载安装windows script。
|
Q: 如何用按键激活缩小到Systray中的S-Term? A: 设置一个S-Term的快捷方式,设置其属性中的快捷键,设置成如Ctrl + Alt + S,这样以后一按这个快捷键就可以呼出S-Term
|
Q: 修改脚本时出错了?怎么办? A: 1、确认打开了选项-〉系统设置-〉多样化参数-〉勾上为装入的脚本生成LST文件 2、根据错误提示的行号和列号,察看LST文件找到对应位置,在源文件中修正错误 可以在http://msdn.microsoft.com/scripting/ 下载脚本调试工具
|
Q: 我可以修改和发布Control.vbs等等脚本吗? A: 完全可以,请保留文件最前面的作者版权信息等。欢迎来讨论区讨论,你写的有普遍意义的脚本以后将随S-Term一起发布。
|
Q: S-Term拖动窗口字体不变化? A: 1、当前可能使用了固定点阵大小的字体如Fixed Sys,换个字体就可以了 2、当前连接属性中设置了拖动窗口不改变字体
|
Q: Unix/Linux主机类型与BBS类型有什么不一样? A: 1、终端设置方面 *nix的键盘模拟是vt110、支持自动换行,而bbs是vt220,不支持自动换行,切换成bbs时自动设置屏幕大小为80*24 2、外观方面*nix拖动窗口不改变字体,而bbs默认拖动窗口改变字体 3、支持鼠标方面*nix将关闭全部选项 4、防止发呆方面*nix将关闭全部选项 5、粘贴:*nix直接将剪贴板内容送入主机,而bbs将先转换剪贴板中的esc为对应的按键
|
Q: 怎样设置筛选下载文章的表达式? A: 1、输入一个逻辑表达式定义搜索,总共可以搜索No(数字, 文章号), Mark(字符串, 标记 如g, b等), Author(字符串, 文章作者), dDate(字符串, 日期), Title(字符串, 标题), lLine(字符串, 整行文本,包括文章号,标记等的一个字符串)。 可以直接使用VBscript中的Instr(串, 查找的子串)进行查找, 也可以使用各种函数如Mid, Left, Ucase等等, S-Term也提供RegExpMatch(模式,串), 帮助使用正则表达式进行查找. Instr(Title, "sterm") > 0
Lcase(Author) = "pred" 如果同时要满足多个条件,可用And, Or等连接,如 Instr(Title, "sterm") > 0 And Lcase(Author) = "pred" 默认True表示对任何文章下载筛选都返回True,因此下载所有文章
2、普通字符串查找Instr是区分大小写的,因此,如果需要查找所有包含STerm以及sterm的标题,可以写成 或 Instr(Ucase(Title), "STERM") > 0 其中Lcase和Ucase分别是将字符串转换成全小写/大写,详细Vbscript脚本函数可参见Msdn中相关部分
(Instr(Lcase(Title), "sterm") > 0 Or Instr(Title, "脚本") > 0) And (No > 1000)
4、正则表达式的语法可参见Msdn->Platform SDK Documentation->Tools and Scripting->Scripting->Windows Script Technologies->VBscript->User's Guide->Introduction to Regular Expressions->Regular Expressions Syntax,或者直接在Msdn的Index中输入regular expression syntax 用正则表达式可以完成复杂的搜索: 如需要查找标题中包含有数字或者英文字母RSTUVW或rstuvw的所有文章可以写成 RegExpMatch("[R-Wr-w0-9]", Title) > 0 配合其他条件一起使用,比如在上面的情况下还要求作者为pred可以写成 (RegExpMatch("[R-Wr-w0-9]", Title) > 0) And (lcase(Author) = "pred")
|
Q: 怎样批量下载文章?怎样下载精华区? A: 在文章列表时按拷贝文章的按钮即可批量下载文章,进入精华区后按拷贝文章即可下载精华区
|
Q: 自动登陆不会用 A: 按工具条上的齿轮,或者点击选项->当前连接设置->Telnet设置中,选择登陆Tab,勾上自动登陆,在等待中写上等待的内容,如bbs上在要求输入用户名会提示:请输入用户名,那么可以在等待中写上 "用户名"(不要写引号),发送写上你的用户名,要送出回车请写上^M,如要送出pred加回车,写上"pred^M"(不要写引号)即可。
|
Q: 新版的sterm在粘贴从ansieditor中复制过来的彩色asc图片时原代码中的*[会变成**[ ? A: 从2507开始粘贴就改成这样了,主要的目的是为了能在bbs之间拷贝和粘贴,比如在一个bbs输入esc的方法是按两下esc键,在另一个bbs上是两个^U,而另外一个bbs却是esc键1次,就造成了矛盾。因此,只好把剪贴板中的esc统一成一个,根据具体bbs的设置转换成按键从而正确的粘贴。 在新版的STerm中带有ClipboardCvt工具,运行后自动监视剪贴板,把其中的2个ESC转换成1个ESC
|
Q: 怎么在自动登陆或者用户自定义按键中输入回车? A: 关于自动登陆,用户定义按键等说一句,回车是^M,其他的特殊的符号按照bbs地说明用如发文章^P直接写就可以了,脚本中也一样,用SendConvertedData送出即可。请参看目录下的 发送特殊字符.htm
|
Q: 站点显示好像有问题? A: 关掉当前连接设置中的自动换行。还有问题?也许是站点的问题:)
|
Q: 浮动输入框中怎么换行? A: Ctrl + Enter
|
Q: 怎样上big5站点? A: 1、当前连接设置-〉远程登录设置-〉终端设置中勾上Big5站点 2、浮动输入框中输入的内容或者粘贴的内容自动转化成Big5.
|
Q: 为什么笑脸变蓝了或者在闪烁? A: 在闪烁表示来了消息或者聊天请求,变蓝表示自动回复了消息
|
Q: 消息来了没反应?图标不闪烁,笑脸不闪烁? A: 确认: 1、BBS上的个人设置打开了收到消息发声 2、当前Session连接设置为BBS 如果不行 3、在系统设置中选择系统控制脚本,就用STerm带的control.vbs 如果还不行 4、就找一个别人改好的control.vbs 找不到?动手改改control.vbs吧,见最下面的说明
|
Q: BBS无法支持鼠标? A: 修改设置中的终端类型为BBS。 另外,确认窗口行为24,列为80,如果有必要断开bbs重新连接试试看。
|
Q: 无法通过拖动屏幕改变字体大小? A: 更改字体,改为宋体等就可以了。
|
Q: 如何设置快速连接时的屏幕显示字体的大小颜色,背景颜色等? A: 在选项-〉当前连接设置中中设置字体,颜色,TELNET设置即可
|
Q: 请问定义登陆每个主机时采用不同的字体等设置? A: 请采用地址薄设置
|
Q: 如何防止发呆? A: 按下工具条上的防止发呆按钮即可,如果过了指定的时间不按动键盘也会启动防止发呆功能,您可以在选项->当前连接设置->Telnet设置中设置。
|
Q: 如何才能自动回复信息? A: 按下工具条上的自动回复信息按钮即可。如果过了指定的时间不按动键盘也会启动防止发呆功能,您可以在选项->当前连接设置->Telnet设置中设置。
|
Q: 如何指定自动回复信息的内容? A: 在TELNET设置中设置即可。
|
其他可以参考S-Term内的英文帮助。
|
消息判断:
关于消息的判断,首先判断连接类型是不是BBS
然后判断这次主机送来的发声的次数,
如果大于3,应该是聊天请求,设置STerm的消息状态为STERM_STATE_TALK
如果为0,没有任何请求
否则,如果能在屏幕顶端检测出消息,那么就是STERM_STATE_MSG,如果不能,就是STERM_STATE_UNKNOWN
这里检测消息用control.vbs最后的Function RegExpMatch(patrn, strng),检测第一行中有没有如(Apr 4 2002 19:20:00):或者(19:20):的字符串,用正则表达式\(([A|Z]|[a-z]|[0-9]| |:)*\)定义,如果在你的bbs上检测不到消息,看看这里是不是有问题?
如果检测到表达式,RegExpMatch(patrn, strng)的返回值高字节为检测到的第一个位置,低字节为匹配长度,如果检测不到,返回0
Sub STerm_OnDataCome(ByVal ID)
Dim obj
Dim strLine
Dim nType
Dim r
Dim regEx, Match, Matches
Dim nIdLength, nTimeLength
Dim strID, strTime, strMsg
Dim i, nScreenHeight
Set obj = STermControlScript.GetWindowObj(ID)
If (obj.nConnectionType = STERM_CONNECTION_BBS) Then
If obj.nMaxBeepCount > 3 Then
obj.nMsgState
= STERM_STATE_TALK
ElseIf
obj.nMaxBeepCount > 0 Then
strLine = obj.GetBuffer(0)
r = RegExpMatch("\(([A|Z]|[a-z]|[0-9]| |:)*\)", strLine)
'检测消息特征
If r = 0 Then
obj.nMsgState = STERM_STATE_UNKNOW
Else
nIdLength = Int(r / 256)
nTimeLength = r Mod 256
If nIdLength = 0 Then
obj.nMsgState = STERM_STATE_UNKNOW
Else
If nTimeLength < 2 Then
obj.nMsgState = STERM_STATE_UNKNOW
Else
obj.nMsgState = STERM_STATE_MSG
strID = Left(strLine, nIdLength)
strTime = Mid(strLine, nIdLength + 2, nTimeLength - 2)
strMsg = Mid(strLine, nIdLength + nTimeLength + 1 + 1)
If (RegExpMatch("\(\^", strMsg) > 0) Then 'Normal BBS Msg?
Else
' Smth BBS MSG?
strMsg = ""
nScreenHeight = obj.GetScreenHeight()
For i = 1 To nScreenHeight - 1
strLine = obj.GetBuffer(i)
If (InStr(strLine, " 第") = 1) Then
Exit For
End If
strMsg = strMsg + strLine + vbCRLF
Next
End If
obj.AddMsgToLst strID, strTime, strMsg, False
End If
End If
End If
End If
End If
End Sub