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窗口回到文章列表。非常方便。

本修改

  1. 安全,Norton报告恶意脚本请简单得忽略他,因为我用了2个正则表达式验证,如果你想加入更多的验证,请自行加入呵呵。
  2. 与原代码耦合度低,增加方便。
  3. 代码编写工整,尽量节省系统资源耗费。

首先打开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自动生效。