鼓浪听涛:按L在浏览器内打开文章
S-term http://sterm.smth.edu.cn is A smart, SSH enabled, script extendable TERM,Sterm最强大的功能就在于script extendable,所以有次我戏说Sterm不是一个Telnet工具,而是一个开发工具,一个可以使用vbscript二次开发的Telnet Application Framework。咳咳。
关于如何在程序中应用Script Control 可以参考Exploring the Microsoft Script Control http://www.microsoft.com/mind/0799/script/script.asp 。
以下所做的只适用于鼓浪听涛 http://bbs.xmu.edu.cn BBS,源于我在鼓浪听涛增加了按L显示文章URL的特性,有人提出能不能按L就直接弹出浏览器查看文章。。。咳咳,这个应该是Term做的事情,BBS系统本身想做也做不了。所以我就打算用Sterm来玩玩这个功能,先前也曾经用Sterm写过聊天机器人,鉴于某些原因,没有公布源代码呵呵。
这个脚本的功能是,你在文章前面按L,则会自动使用默认浏览器打开这篇文章并激活,同时BBS窗口回到文章列表。非常方便。
本修改
- 安全,Norton报告恶意脚本请简单得忽略他,因为我用了2个正则表达式验证,如果你想加入更多的验证,请自行加入呵呵。
- 与原代码耦合度低,增加方便。
- 代码编写工整,尽量节省系统资源耗费。
首先打开Sterm安装目录,把Script\control.vbs这个文件做个备份,接着在Sterm内,系统设置使用系统控制脚本,关闭对话框后加载新脚本。
用文本编辑器打开Script\control.vbs。
继续浏览查看代码。
在
Class STermVariantObj
内添加
'****************************************************************
'鼓浪听涛:按L在浏览器内打开文章
'****************************************************************
Public blnKeyLPressed
在
Sub InitObj(varobj)
内添加
varobj.blnKeyLPressed = False
在
Sub STerm_OnMouseKBEvent(ID, nEventID, wParam, lParam)
内添加
Set varobj = GetVariantObjByID(ID)
Case KEYBOARD_ONCHAR
If nChar = Asc("L") Then
varobj.blnKeyLPressed = True
End If
最后加入,有打开就有关闭
Set varobj = Nothing
Sub STerm_OnDataCome(ID)
在
If (obj.nConnectionType = STERM_CONNECTION_BBS) Then
···
内添加
```vb
STerm_LaunchExplorerIfKeyLPressed(ID)
···
添加函数
```vb
Sub STerm_LaunchExplorerIfKeyLPressed(ID)
Dim wsExplore
Dim obj, varobj
Dim strLine
Dim regEx
Set varobj = GetVariantObjByID(ID)
If varobj.blnKeyLPressed Then
Set obj = STermControlScript.GetWindowObj(ID)
Set regEx = new RegExp
'按任何键继续...
regEx.Pattern = "^\s+按任何键继续\.\.\.\s+$"
strLine = obj.GetBuffer(obj.GetScreenHeight() - 1)
If regEx.Test(strLine) Then
'http://bbs.xmu.edu.cn/bbscon?board=XMUExpress&file;=M.1073963564.A
regEx.Pattern = "^http://bbs\.xmu\.edu\.cn/bbscon\?board=(\w+)?&file;=M\.(\d+)?\.A\s+$"
strLine = obj.GetBuffer(obj.GetScreenHeight() - 2)
If regEx.Test(strLine) Then
Set wsExplore = CreateObject("WScript.Shell")
wsExplore.Run(strLine)
obj.SendData " "
Set wsExplore = Nothing
End If
End If
varobj.blnKeyLPressed = False
Set regEx = Nothing
Set obj = Nothing
End If
Set varobj = Nothing
End Sub
打开系统设置,选上关闭对话框后加载新脚本。关闭对话框。脚本开始运作。下次打开Sterm自动生效。