HTA (Html应用程序)VBScript读取文本文件行并仅为该行着色



我一直在做一个聊天HTA文件,在工作中玩…

:)

效果很好,但是有人要求给每个人的文本涂上不同的颜色?

我一直在想办法弄到它,但是我遇到了麻烦,如果可能的话,有人能帮我吗?

下面是我所做的基本代码found

我已经把每一行放入一个数组,但然后给每一行分配一个颜色,我不能工作…

如果我不能在不使用文本文件的情况下在Windows中显示"聊天",那么这将是很好的更好(节省清理删除不需要的文本文件…)

也请告诉我如何更好地我的编码…我做这行没那么久……(几个月)

干杯Pavle .

'在HTA聊天

<HTA:APPLICATION 
     SCROLL="auto"
     SINGLEINSTANCE="yes"
     WINDOWSTATE="normal"
>
</head>
<SCRIPT Language="VBScript">
Sub Window_OnLoad
 Window.ResizeTo 400,300
   iTimerID = window.setInterval("Display", 100)
End Sub
    strPath = "C:UsersPavleDesktop"
    Set wshShell = CreateObject( "WScript.Shell" )
    strSender = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )

Sub Display
    Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(StrPath & "Chat.txt", 1)
Do Until objFile.AtEndOfStream
    strCharacters = objFile.ReadAll
Loop
 objFile.Close

     DisplayBox.Value = strCharacters
        DisplayBox.ScrollTop = DisplayBox.ScrollHeight

 ' This splits each line.
' sArray = Split(DisplayBox.Value, vbcrlf)
End Sub
Sub InputBox
With document.parentWindow.event
 If .keycode = 13 then
    Const NORMAL_WINDOW = 1
    Const ForAppending = 8
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     Set objTextFile = objFSO.OpenTextFile(StrPath & "Chat.txt", ForAppending, True)
      objTextFile.WriteLine strSender & ":" & Input.Value
       objTextFile.Close

    Input.Value = ""
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{BACKSPACE}"

Else
   .cancelbubble = false
     .returnvalue = true
 End If
End With
End Sub

</SCRIPT>
<body>
<textarea name="DisplayBox" rows="6" cols="40"></textarea>
<BR>
<BR>
<BR>
<textarea name="Input" rows="3" onKeydown=InputBox cols="40"></textarea>
</body>
</html>`

这里有一些指导方针。

首先,textarea不能有HTML,所以它不能用作富文本的pad。为此,您需要<pre>或更确切地说,<div>。例如:

<div name="DisplayBox" class="textpad" contenteditable="true"></div>

然后在读取文件时为行添加格式化标记。像这样:

Dim n
n = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(StrPath & "Chat.txt", 1)
Do Until objFile.AtEndOfStream
    n = n * (-1)
    strCharacters = strCharacters & "<p class='line" & n & "'>" & objFile.ReadLine() & "</p>"
Loop
objFile.Close
DisplayBox.innerHTML = strCharacters

<p>也可能是<div>。然后你需要一个带有一些类的样式表:

.line1 {
    color: red;
}
.line-1 {
    color: blue;
}
.textpad {
    position: relative;
    width: 400px;
    height: 200px;
    border: 2px inset;
    overflow-y: scroll;
}

现在你有红色和蓝色的线在#DisplayBox。只要样式的div你想要的。

(顺便说一句,这是我的第一个VBScript…)

最新更新