PersonalCorpus 版 (精华区)

发信人: joyfree (白龙●忙得像死狗), 信区: Test
标  题: 下载整个版面脚本
发信站: 哈工大紫丁香 (2003年11月13日19:49:03 星期四), 站内信件

Option Explicit

#include "const.inc"

Dim m_nWindowNumber
Dim m_VariantObjArray()
Dim n, m_FSO

'Copy Article const
Const CA_STATUS_IDLE = 0
Const CA_STATUS_COPYNEXT = 1
Const strSpr = "=================================================="

'Group Copy Article const
Const GCA_STATUS_IDLE = 0
Const GCA_STATUS_START = 1
Const GCA_STATUS_GETARTICLE_NUM = 2
Const GCA_STATUS_MOVE_TO_NEXT = 3
Const GCA_STATUS_MOVE_TO_NEXT_ARTICLE = 4
Const GCA_STATUS_COPY_ARTICLE = 5
Const GCA_STATUS_COPY_SINGLE_ARTICLE = 100

Class STermVariantObj
    Public ID
    Public strLastMsg, bIsMsgCome, strLastMsgCome
    Public strSLine(), strSLineOld()
    Public Sub RedimLines(n)
        ReDim strSLine(n), strSLineOld(n)
    End Sub
    Public nScreenHeight, nCAStatus
    Public nGroupCopyStatus
    Public strArticleSegment
    Public bCopySingleArticleEnd
    Public nSingleArticlePercent
    Public nTotalArticleNum
    Public nCurrentArticle
    Public strArticlePath
    Public strArticleTitle
    Public IndexTextStream
    Public TextStream
End Class

Sub STerm_OnAutoReply(ByVal ID, ByVal nMsgType)
    Dim strMsg, strLine, l, i
    Dim obj, varobj
    Set varobj = GetVariantObjByID(ID)
    Set obj = STermControlScript.GetWindowObj(ID)
    
    strMsg = obj.GetBuffer(0)
    If RegExpMatch("\(\^", strMsg) > 0 Then
        l = InStr(strMsg, ")")
        If (l > 0) Then
            strMsg = Trim(Mid(strMsg, l + 2))
        End If
    Else
        strMsg = ""
        varobj.nScreenHeight = obj.GetScreenHeight()
        For i = 1 To varobj.nScreenHeight - 1
            strLine = obj.GetBuffer(i)
            If (InStr(strLine, " 第") = 1) Then
                Exit For
            End If
            strMsg = strMsg + strLine
        Next
    End If
    If (strMsg <> varobj.strLastMsg) Then
        n = n + 1
        obj.SendConvertedData obj.strReplyKey
        obj.SendData obj.strReply + vbCRLF
        varobj.strLastMsg = strMsg
        obj.bAutoReplied = True
    End If
End Sub

Sub STerm_OnAntiIdle(ByVal ID)
    Dim obj, varobj
    Set varobj = GetVariantObjByID(ID)
    Set obj = STermControlScript.GetWindowObj(ID)
    
    obj.SendConvertedData obj.strAntiIdle
End Sub

Sub STerm_OnMouseKBEvent(ByVal ID, ByVal nEventID, ByVal wParam, ByVal lParam)
    Dim obj, varobj
    Dim x, y, nFlags, zDelta
    Dim nChar
    Set varobj = GetVariantObjByID(ID)
    Set obj = STermControlScript.GetWindowObj(ID)

    x = CLng((lParam Mod 65536)/ obj.nFontWidth) 
    y = CLng((lParam / 65536)/ obj.nFontHeight) 
    nFlags = CLng(wParam Mod 65536)
    zDelta = CInt(wParam / 65536)       'this is a sign value
    nChar = wParam
    
    Select Case nEventID
        Case MOUSE_LBUTTONCLK
        Case MOUSE_LBUTTONDBLCLK
        Case MOUSE_MBUTTONCLK
        Case MOUSE_RBUTTONCLK
        Case MOUSE_RBUTTONDBLCLK
            MsgBox("aaa X:"+CStr(x) + " Y:"+ CStr(y))
        Case MOUSE_WHEEL
        Case KEYBOARD_ONCHAR
    End Select
    
    obj.OnMouseKBEvent nEventID, wParam, lParam
End Sub

Sub STerm_OnDataCome(ByVal ID)
    Dim obj, varobj
    Dim strLine
    Dim nType
    Dim r
    Dim regEx, Match, Matches
    Dim nIdLength, nTimeLength
    Dim strID, strTime, strMsg
    Dim i, bIsWho
        
    Set obj = STermControlScript.GetWindowObj(ID)
    Set varobj = GetVariantObjByID(ID)
    
    If (obj.nConnectionType = STERM_CONNECTION_BBS) Then
        If obj.nMaxBeepCount > 3 Then
            obj.nMsgState = STERM_STATE_TALK
        ElseIf obj.nMaxBeepCount > 0 Then
            varobj.bIsMsgCome = True
            obj.nMsgState = STERM_STATE_UNKNOW
        End If
        
        If varobj.bIsMsgCome = True Then
            strLine = obj.GetBuffer(0)
            If (InStr(strLine, "站长") = 1) Then
                bIsWho = 1
                varobj.strLastMsgCome = strLine
                varobj.bIsMsgCome = False
            ElseIf ((InStr(strLine, "(^Z回)") > 0 Or RegExpMatch("... 
...*\d\d:\d\d", strLine) > 0) And strLine <> varobj.strLastMsgCome) Then
                bIsWho = 0
                varobj.strLastMsgCome = strLine
                varobj.bIsMsgCome = False
            End If

            If varobj.bIsMsgCome = False Then
                r = RegExpMatch("\(([A-Z]|[a-z]|[0-9]| |:)*\)", strLine)
                If bIsWho = 1 Then
                    r = 4 * 256 + 11
                End If
                
                If r = 0 Then
                    obj.nMsgState = STERM_STATE_UNKNOW
                Else
                    nIdLength = CInt(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 Or 
(InStr(strLine, "广播") > 0 And RegExpMatch("\d:\d\d:\d\d", strLine) > 0)) 
Then        'Normal BBS Msg?
                                        
                            Else
                                ' Smth BBS MSG?
                                strMsg = ""
                                varobj.nScreenHeight = obj.GetScreenHeight()
                                For i = 1 To varobj.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 If
End Sub

Sub STerm_CanCopyArticle(ByVal ID)
    Dim obj, varobj
    Dim strLine1, strLine2, strFirstLine, strLastLine

    Set obj = STermControlScript.GetWindowObj(ID)
'   Set varobj = GetVariantObjByID(ID)
    
    obj.bCanCopyArticle = False

    strLastLine = obj.GetBuffer(obj.GetScreenHeight() - 1)
    'Firebird系统
    If (InStr(strLastLine, "下面还有") > 0 Or InStr(strLastLine, "看到末尾") 
> 0) Then
        obj.bCanCopyArticle = True
        Exit Sub
    End If

    If (InStr(strLastLine, "阅读") > 0 And InStr(strLastLine, "结束") > 0) 
Then
        obj.bCanCopyArticle = True
        Exit Sub
    End If

    If (InStr(strLastLine, "回信") > 0 And InStr(strLastLine, "删除") > 0 And 
InStr(strLastLine, "继续") > 0) Then
        obj.bCanCopyArticle = True
        Exit Sub
    End If

    If (InStr(strLastLine, "密码") > 0 And InStr(strLastLine, "删除") > 0 And 
InStr(strLastLine, "错误") > 0) Then
        obj.bCanCopyArticle = True
        Exit Sub
    End If

    If (InStr(strLastLine, "清除") > 0 And InStr(strLastLine, "寄回") > 0) 
Then
        obj.bCanCopyArticle = True
        Exit Sub
    End If

    'MAPLES系统?
    If ((InStr(strLastLine, "浏览") > 0) Or (InStr(strLastLine, "文章") > 0)) 
And (InStr(strLastLine, "搜寻") > 0) Then
        obj.bCanCopyArticle = True
        Exit Sub
    End If

    If (CanGroupCopy(obj)) Then
        obj.bCanCopyArticle = True
        Exit Sub
    End If

End Sub

Function DetectLastLine(varobj)
    Dim i, j, bEqual
    Dim nMinLine
    nMinLine = varobj.nScreenHeight - 2

    For i = varobj.nScreenHeight - 2 To 0 Step -1
        bEqual = True
        For j = 0 To varobj.nScreenHeight - 2 - i
            If varobj.strSLine(j) <> varobj.strSLineOld(i + j) Then
                bEqual = False
                Exit For
            End If
        Next
        If bEqual Then
            nMinLine = varobj.nScreenHeight - 2 - i
        End If
    Next
    DetectLastLine = nMinLine + 1
End Function

Sub WriteHtmlHead(fso)
    fso.write "<html><head>" + vbCRLF
    fso.write "<meta http-equiv=""Content-Language"" content=""zh-cn"">" + 
vbCRLF
    fso.write "<meta http-equiv=""Content-Type"" content=""text/html; 
charset=gb2312"">" + vbCRLF
    fso.write "<title>S-Term, a smart, SSH enabled, script extendable 
TERM...</title>" + vbCRLF
    fso.write "</head>  <body>" + vbCRLF
    fso.write "<p><b><font size=""5"">S-Term文章下载</font></b></p>" + vbCRLF
    fso.write "<p><font size=""2"" color=""#FF00FF"">支持强大脚本功能的Term,支
持SSH的Term,可超强定制的Term</font></p><hr><p></p>" + vbCRLF
    
End Sub

Sub WriteHtmlEnd(fso)
    fso.write "<p></p><hr><p>欢迎光临<a 
href=""http://www.sterm.com"">http://www.sterm.com</a>, <a 
href=""http://sterm.smth.edu.cn"">http://sterm.smth.edu.cn</a>获取最新的S-Term
,<b><font color=""#FF0000"">本下载通过脚本实现</font></b></p>" + vbCRLF
    fso.write "</body></html>" + vbCRLF
End Sub

Function GetPercent(ByVal strLine)
'   Dim regEx, Match, Matches, str
'   Set regEx = New RegExp
'   regEx.Pattern = "\d{1,}"
'   regEx.IgnoreCase = True
'   regEx.Global = True
'   Set Matches = regEx.Execute(strLine)
'   str = ""
'   For Each Match in Matches
'       Str = Match.Value
'       Exit For
'   Next
    Dim nStart, nEnd, strTemp
    nStart = InStr(strLine, "(")
    nStart = nStart + 1
    nEnd = InStr(strLine, "%")
    nEnd = nEnd - nStart
    If nEnd > 0 Then
        strTemp = Mid(strLine, nStart, nEnd)
        GetPercent = CLng(strTemp)
    Else
      GetPercent = 100
    End If
End Function

Function RegExpMatch(patrn, strng)
    Dim n1, n2, r
    Dim regEx, Match, Matches           ' Create variable.
    n1 = 0
    n2 = 0
    Set regEx = New RegExp              ' Create a regular expression.
    regEx.Pattern = patrn               ' Set pattern.
    regEx.IgnoreCase = True             ' Set case insensitivity.
    regEx.Global = True                 ' Set global applicability.
    Set Matches = regEx.Execute(strng)  ' Execute search.

    For Each Match in Matches           ' Iterate Matches collection.
        n1 = Match.FirstIndex
        n2 = Match.Length
        Exit For
    Next
    r = n1 * 256 + n2
    RegExpMatch = r
End Function

Sub STerm_OnCopyArticle(ByVal ID, ByVal bCopyInit)
'   该事件在除了第一次外,在发生了STerm_OnDataCome后发生,因此,状态变化必须考
虑到
'是否会引起服务器发送数据

    Dim i, strLastLine, strLine, strDir, c
    Dim obj, varobj
    Dim bEndCopy, bIsEnd
    Dim fso
    Dim TestFolder
    
    Set obj = STermControlScript.GetWindowObj(ID)
    Set varobj = GetVariantObjByID(ID)

    If bCopyInit Then
        '用户中断 or 关闭拷贝对话框
        varobj.RedimLines(0)
        varobj.nCAStatus = CA_STATUS_IDLE
        If (CanGroupCopy(obj)) Then
            varobj.nGroupCopyStatus = GCA_STATUS_START
        Else
            varobj.nGroupCopyStatus = GCA_STATUS_COPY_SINGLE_ARTICLE
        End If
        
        Exit Sub
    End If
    
    Select Case varobj.nGroupCopyStatus
        '每次做一次操作似乎比较稳妥,每个操作都会被执行,否则执行操作方面就可能
出问题
        '不过好像还是可能会出问题,不知道为什么
        Case GCA_STATUS_IDLE
        Case GCA_STATUS_START
            strDir = STermControlScript.GetSTermDir()
            If Right(strDir, 1) <> "\" Then
                strDir = strDir + "\"
            End If
            strDir = strDir + "Article\"
            If Not m_FSO.FolderExists(strDir) Then
                '创建 article\ 目录
                m_FSO.CreateFolder(strDir)
            End If

            strLine = CStr(now)
            For i = 1 to Len(strLine)
                c = Mid(strLine, i, 1)
                If (c >= "0") And (c <= "9") Then
                    strDir = strDir + c
                End If
            Next
            strDir = strDir + "\"
            
            If m_FSO.FolderExists(strDir) Then
                obj.InsertArticleLines "目录 "+strDir+"已存在,结束拷贝" , 
100, True
                varobj.nGroupCopyStatus = GCA_STATUS_IDLE
                Exit Sub
            End If
            
            varobj.strArticlePath = strDir
            m_FSO.CreateFolder(strDir)  '创建文件下载目录
            obj.InsertArticleLines "生成目录 "+strDir + vbCRLF , 0, False
            
            obj.SendData "$"        '移动到列表底部
            varobj.nGroupCopyStatus = GCA_STATUS_GETARTICLE_NUM
            Exit Sub
        Case GCA_STATUS_GETARTICLE_NUM
            i = GetArticleNum(obj, varobj)
            If (i > 0) Then
                varobj.nTotalArticleNum = i
                varobj.nCurrentArticle = 1
                varobj.nGroupCopyStatus = GCA_STATUS_MOVE_TO_NEXT_ARTICLE
                obj.SendData "j"        '下移一篇文章,现在已经在最低下,移动后
到第一篇
                Set varobj.IndexTextStream = Nothing
                Set varobj.IndexTextStream = 
m_FSO.CreateTextFile(varobj.strArticlePath & "index.htm")
                WriteHtmlHead(varobj.IndexTextStream)
                obj.InsertArticleLines "共有" +CStr(i) + "篇文章" + vbCRLF , 
0, False
                obj.InsertArticleLines "生成index.htm" + vbCRLF , 0, False
            End If
            
            Exit Sub
        Case GCA_STATUS_MOVE_TO_NEXT
            obj.SendData "j"        '移动到下一篇
            varobj.nGroupCopyStatus = GCA_STATUS_MOVE_TO_NEXT_ARTICLE
            
            
        Case GCA_STATUS_MOVE_TO_NEXT_ARTICLE
            i = GetArticleNum(obj, varobj)
'           MsgBox(i)
            If (i > 0) AND (i = varobj.nCurrentArticle) Then
                varobj.RedimLines(0)
                varobj.nCAStatus = CA_STATUS_IDLE
                obj.SendData chr(13)    '送出回车,进入文章
                varobj.nGroupCopyStatus = GCA_STATUS_COPY_ARTICLE
                
                '将超级连接写入index.htm
                varobj.IndexTextStream.Write "<a href=""" & CStr(i) & 
".htm"">"
                varobj.IndexTextStream.Write varobj.strArticleTitle + vbCRLF 
+ "</a><br>"
                Set varobj.TextStream = Nothing
                Set varobj.TextStream = 
m_FSO.CreateTextFile(varobj.strArticlePath & CStr(varobj.nCurrentArticle) & 
".htm")
                WriteHtmlHead(varobj.TextStream)
            End If
        Case GCA_STATUS_COPY_ARTICLE
            
            CopyArticleSegments obj, varobj, True
            varobj.TextStream.Write varobj.strArticleSegment
            
            If varobj.bCopySingleArticleEnd Then
                '拷贝完一篇文章
                WriteHtmlEnd(varobj.TextStream)
                varobj.TextStream.Close
                strLine = "拷贝文章" + CStr(varobj.nCurrentArticle) + "完成" 
+ vbCRLF
                obj.InsertArticleLines strLine, varobj.nCurrentArticle * 100 
/ varobj.nTotalArticleNum , False
                If (varobj.nCurrentArticle = varobj.nTotalArticleNum) Then
                    varobj.nGroupCopyStatus = GCA_STATUS_IDLE
                    WriteHtmlEnd(varobj.IndexTextStream)
                    varobj.IndexTextStream.Close
                    obj.InsertArticleLines vbCRLF + "拷贝完成" + vbCRLF , 100 
, False
                    obj.InsertArticleLines "请打开" + varobj.strArticlePath + 
"index.htm" + "观看" + vbCRLF , 100 , True
                Else
                    varobj.nCurrentArticle = varobj.nCurrentArticle + 1
                    varobj.nGroupCopyStatus = GCA_STATUS_MOVE_TO_NEXT
                    obj.SendData "q"        '退出当前文章
                End If
            End If
        Case GCA_STATUS_COPY_SINGLE_ARTICLE
            CopyArticleSegments obj, varobj, False
            obj.InsertArticleLines varobj.strArticleSegment, 
varobj.nSingleArticlePercent, varobj.bCopySingleArticleEnd
    End Select
    
End Sub

Function GetArticleNum(obj, varobj)
    '取得当前bbs带有标记">"的行的行号,该行内容放入varobj.strArticleTitle
    Dim strLastLine, strLine, i, r, s, l
    strLastLine = Trim(obj.GetBuffer(obj.GetScreenHeight() - 1))
    If (Len(strLastLine) > 0) Then
        For i = obj.GetScreenHeight() - 2 to 3 Step -1
            strLine = obj.GetBuffer(i)
            If Left(strLine, 1) = ">" Then
                r = RegExpMatch("\d+\D", strLine)
                s = Int(r/256) + 1
                l = (r mod 256) - 1
                GetArticleNum = CLng(Mid(strLine, s, l))
                varobj.strArticleTitle = Mid(strLine, 2)
                Exit Function
            End If
        Next
    End If
    GetArticleNum = -1
End Function


Sub CopyArticleSegments(obj, varobj, bWebView)
    Dim i, nLastLine, strLastLine, nPercent, strTemp, strArticle
    Dim bEndCopy, bIsEnd, strLineEnd
    
    varobj.strArticleSegment = ""
    varobj.bCopySingleArticleEnd = False
    
    If (bWebView) Then
        strLineEnd = "<br>" + vbCRLF
    Else
        strLineEnd = vbCRLF
    End If
    
    strLastLine = obj.GetBuffer(obj.GetScreenHeight() - 1)
    If (InStr(strLastLine, "阅读") = 0 And InStr(strLastLine, "下面") = 0 And 
InStr(strLastLine, "删除") = 0 And InStr(strLastLine, "浏览") = 0 And 
InStr(strLastLine, "选读") = 0 And InStr(strLastLine, "继续") = 0 And 
InStr(strLastLine, "看到末尾") = 0) Then
        Exit Sub
    End If

    If (InStr(strLastLine, "下面") > 0 Or InStr(strLastLine, "暂存") > 0 Or 
(InStr(strLastLine, "剩余:   0") = 0 And InStr(strLastLine, "讯息浏览器") > 
0)) Then
        '如果文章没完
        bEndCopy = False
        nPercent = GetPercent(strLastLine)
    Else
        bEndCopy = True
        nPercent = 100
    End If

    If varobj.nCAStatus = CA_STATUS_IDLE Then
        varobj.nScreenHeight = obj.GetScreenHeight()
        varobj.RedimLines(varobj.nScreenHeight - 1)
    End If

    strTemp = ""
    If (bEndCopy = True) Then
        bIsEnd = True
    Else
        bIsEnd = False
    End If
    
    For i = varobj.nScreenHeight - 2 To 0 Step -1
        strTemp = RTrim(obj.GetBuffer(i))
        If (strTemp <> "" And bEndCopy = True And bIsEnd = True) Then
            bIsEnd = False
        End If
        If (bIsEnd <> True) Then
            strTemp = strTemp + strLineEnd
        End If
        varobj.strSLine(i) = strTemp
    Next

    strArticle = ""

    If (varobj.nCAStatus = CA_STATUS_IDLE) Or (Not bEndCopy) Then
        If varobj.nCAStatus <> CA_STATUS_IDLE Then
            nLastLine = 1
        Else
            nLastLine = 0
        End If
        For i = nLastLine To varobj.nScreenHeight - 2
            varobj.strSLineOld(i) = varobj.strSLine(i)
            strArticle = strArticle + varobj.strSLine(i)
        Next
    Else
        nLastLine = DetectLastLine(varobj)
        For i = nLastLine To varobj.nScreenHeight - 2
            strArticle = strArticle + varobj.strSLine(i)
        Next
    End If

    If Not bEndCopy Then
        '翻页
        obj.SendData " "
        varobj.nCAStatus = CA_STATUS_COPYNEXT
    Else
'       strArticle = strArticle + strLineEnd + "(本文采用S-Term文章拷贝脚本拷贝
)" + strLineEnd + strSpr + strLineEnd
        varobj.nCAStatus = CA_STATUS_IDLE
    End If
    
    varobj.bCopySingleArticleEnd = bEndCopy
    varobj.strArticleSegment = strArticle
    varobj.nSingleArticlePercent = nPercent
End Sub

Sub STerm_OnInit()
    m_nWindowNumber = 0
    n = 0
    Set m_FSO = CreateObject("Scripting.FileSystemObject")

'    MsgBox(STermControlScript.GetSTermDir())
End Sub

Sub STerm_OnExit()
    Dim i
    For i = 0 to m_nWindowNumber - 1
        Set m_VariantObjArray(i) = Nothing
    Next
End Sub

Function GetVariantObjByID(ID)
    Dim i
    For i = 0 to m_nWindowNumber - 1
        If m_VariantObjArray(i).ID = ID Then
            Set GetVariantObjByID = m_VariantObjArray(i)
            Exit Function
        End If
    Next
    ' not found...?
    ' Maybe this is a new script loaded when sterm is already running with 
one or more windows
    ' So let's create a variant obj and init it
    Set GetVariantObjByID = CreateVariantObjByID(ID)
    InitObj(GetVariantObjByID)
End Function

Function CreateVariantObjByID(ID)
    m_nWindowNumber = m_nWindowNumber + 1
    ReDim Preserve m_VariantObjArray(m_nWindowNumber)
    Set m_VariantObjArray(m_nWindowNumber - 1) = New STermVariantObj
    m_VariantObjArray(m_nWindowNumber - 1).ID = ID
    Set CreateVariantObjByID = m_VariantObjArray(m_nWindowNumber - 1)
End Function

Function RemoveVariantObjByID(ID)
    Dim i, j
    For i = 0 to m_nWindowNumber - 1
        If m_VariantObjArray(i).ID = ID Then
            Set RemoveVariantObjByID = m_VariantObjArray(i)
            Set m_VariantObjArray(i) = Nothing
            For j = i to m_nWindowNumber - 2
                Set m_VariantObjArray(j) = m_VariantObjArray(j + 1)
            Next
            m_nWindowNumber = m_nWindowNumber - 1
            ReDim Preserve m_VariantObjArray(m_nWindowNumber)
            Exit Function
        End If
    Next
    Set RemoveVariantObjByID = Nothing
End Function

Sub InitObj(varobj)
    varobj.nCAStatus = CA_STATUS_IDLE
    varobj.strLastMsg = ""
    varobj.strLastMsgCome = ""
    varobj.bIsMsgCome = False
    varobj.nGroupCopyStatus = GCA_STATUS_IDLE
End Sub

Sub STerm_OnSessionOpen(ID)
    Dim varobj, obj
    
    Set varobj = CreateVariantObjByID(ID) 
    InitObj(varobj)
'   Set obj = STermControlScript.GetWindowObj(ID)
'   MsgBox(obj.GetSessionName() + VBCRLF + obj.GetHostAddress() + ":" + 
CStr(obj.GetHostPort()))
End Sub

Sub STerm_OnSessionClose(ID)
    Dim varobj

    Set varobj = RemoveVariantObjByID(ID)
End Sub

Function CanGroupCopy(obj)
    '如果此函数返回False,表示当前不是版面文章列表状态
    Dim strLine1, strLine2, strLastLine
    
    strLine1 = obj.GetBuffer(1)
    strLine2 = obj.GetBuffer(2)
    If Not (InStr(strLine2, "编号") > 0) Then
        CanGroupCopy = False
        Exit Function
    End If
    
    strLastLine = obj.GetBuffer(obj.GetScreenHeight() - 1)
    strLastLine = Trim(strLastLine)
    If Len(strLastLine) < 1 Then
        CanGroupCopy = False
        Exit Function
    End if
    
    If (InStr(strLastLine, "清除") > 0 And InStr(strLastLine, "寄回") > 0) 
Then
        CanGroupCopy = False
        Exit Function
    End If

    'MAPLES系统?
    If ((InStr(strLastLine, "阅读") > 0) Or (InStr(strLastLine, "文章") > 0)) 
or (InStr(strLastLine, "下面") > 0) Then
        CanGroupCopy = False
        Exit Function
    End If  

    CanGroupCopy = TRUE
End Function 
--
    -╬╬-                   ●     __ ★   
    ╭╬╮      ╭═╮   ╬╭╬╮ ══╬    
   -╩╬╩- ╭╮╠═╣   ╬╟┼╢   ╠║    
    ╭╨╮  ╟╢╠═╣ ╭╫╰╬╯   ║║    
    ∣  ∣  ╰╯║  ║   ║  ║   ╞╩║    
    ╯  ╰      ╯  ╯   ╯  ╰   ╯  ╰═  

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 61.190.81.68]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:402.928毫秒