HTA即时创建vbscripts

时间:2015-07-07 07:03:44

标签: vbscript hta

HTA中有没有办法读取包含vbscript的文件并将其动态添加到子程序中?所以当我点击一个按钮时,子程序被调用的是从具有它的文件中读取的vbscript?

我试过读取文件并将其存储到变量中。我知道你不能执行一个变量。那么我们如何实现这一目标呢?

通常我需要一种方法来填充

中的数据
<script language="VBScript">
..........
.........
text from the file
..........
.........
</script>
这可能吗?或者如果它不能被硬编码,那么如何运行脚本?创建一个Wscript shell并使用cscript指向该文件不会工作因为我使用了需要HTA工作的vbs中的其他对象。

需要帮助,谢谢:)

2 个答案:

答案 0 :(得分:2)

有可能。您需要使用ExecuteGlobal()函数将动态代码添加到HTA。这是一个例子。

动态导入的代码(让我们称之为c:\library.vbs):

Sub ImportedLater()
    MsgBox "I am not part of the HTA. I was imported later."
End Sub

广告然后,在您的HTA中:

<html>
<head>
    <title>HTA Test</title>
    <HTA:APPLICATION>
</head>

<body>
    <button onclick="Test()">Click me</button>
</body>

<script language="VBScript">

    ' Add code from VBS file to global scope...
    ExecuteGlobal CreateObject("Scripting.FileSystemObject").OpenTextFile("c:\library.vbs").ReadAll()

    Sub Test()

        ' Button clicked. Call an imported function...
        ImportedLater

    End Sub

</script>
</html>

这应该在ImportedLater子程序中显示消息。

答案 1 :(得分:0)

这个示例向您展示如何使用HTA打开和读取日志文件:

<html>
<Title>How to open and read the log file with HTA</Title>
<head>
<HTA:APPLICATION 
ICON="cmd.exe"
APPLICATIONNAME = "How to open and read the log file with HTA" 
BORDER="dialog"
BORDERSTYLE="complex"
WINDOWSTATE="maximize"
>
<style>
body{
background-color: Black;
}
</style>
</head>
<script type="text/Vbscript">
Option Explicit
Dim File,fso,oFile,objShell
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell") 
File = "C:\Test_" _
    & Month(Date) & "_" & Day(Date) & "_" & Year(Date) _
    & ".txt"
'***********************************************************
Sub LoadMyFile()
    txtBody.Value = LoadFile(File)
End Sub
'***********************************************************
Function LoadFile(File)
    On Error Resume Next
    Dim fso,F,ReadMe,strError
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set F = fso.OpenTextFile(File,1)
    If Err.Number <> 0  Then
        strError = "<center><b><font color=Red>The file "& File &" dosen't exists !</font></b></center>"
        myDiv.InnerHTML = strError
        Exit Function
    End If
    ReadMe = F.ReadAll
    LoadFile = ReadMe
End Function
'***********************************************************
Sub Clear()
    txtBody.Value = ""
    myDiv.InnerHTML = ""
    Txtarea.Value = ""
End Sub
'***********************************************************
Function LogOpen()
    Dim Ws,iReturn,strError
    Set ws = CreateObject("WScript.Shell")
    On Error Resume Next
    iReturn = Ws.Run(File,1,False)
    If Err.Number <> 0  Then
        strError = "<center><b><font color=Red>The file "& File &" dosen't exists !</font></b></center>"
        myDiv.InnerHTML = strError
        Exit Function
    End If
End Function
'***********************************************************
Sub Submitarea()
    Dim oFile,sTxtarea,Readfile,ReadAllTextFile,strError
    If Not fso.FileExists(File) Then
        Set oFile = fso.OpenTextFile(File,2,true)
        oFIle.write "The File "& File &" is created at " & FormatDateTime(now,vbLongTime)
        oFile.Close
    End If
    Set Readfile = fso.OpenTextFile(File,1)
    ReadAllTextFile = Readfile.ReadAll
    Set oFile = fso.OpenTextFile(File,2,true)
    sTxtarea = document.all("Txtarea").Value
    oFIle.Writeline
    oFIle.write ("Name ")
    oFIle.write FormatDateTime(now, 2)
    oFIle.write (" ")
    oFIle.write FormatDateTime(now,vbLongTime)
    'FormatDateTime(now, 4)
    oFIle.write (" - ")
    oFIle.Write sTxtarea & vbCrLf
    oFIle.WriteLine ReadAllTextFile
    myDiv.InnerHTML = "Your text has been added to "& File &""
    oFile.Close
    Call LoadMyFile()
End Sub
'***********************************************************
</script>
<body text="white">
<center><input type="button" name="Log" id="Start" value="  Load LogFile  " onclick="LoadMyFile()"><br><br>
<textarea id="txtBody" rows="15" cols="120"></textarea><br><br>
<input type="button" name="Log" id="Start" value="  Open LogFile with Notepad  " onclick="LogOpen()">
<input type="button" value="  Clear  " onclick="Clear()"></center>
<Div id="myDiv"></Div>
<br><br>
<TEXTAREA style="
Height:193;
Width:100%;
font-Size:12;
color:#000000;
background-color:#ffffe7;
font-weight:normal;
font-family:MS Sans Serif" 
TITLE="" 
ID="Txtarea" NAME="Txtarea" TABORDER="2" WRAP="PHYSICAL">The contents of this text area will be written to TextArea.txt when you click submit.</TEXTAREA><br><br>
<center><input type="button" value="Submit" onclick="Submitarea">
<input type="reset" value="Reset"></center>
</body>
</html>