我正在制作一个hta剧本,需要他具备以下功能:
它具有以下功能:
CODE:
<HTML>
<head><title>Name</Title>
<HTA:Application
Border= "thin"
Application="/md/input"
Scoll="NO"
Singleinstance="Yes"
Icon="01.ico">
ShowInTaskbar="Yes"
Caption="Yes">
</Head>
<Script Language="VBSCRIPT" Type = "text/vbscript">
Sub Window_Onload
Window.resizeTo 400,500
End Sub
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set fSo1 = CreateObject("Scripting.FileSystemObject")
wkDir = "test.txt"
'----------------------------------------------------------
sub Window_onLoad()
Window.resizeTo 400,500
set oFSO=CreateObject("Scripting.FileSystemObject")
set oFile=oFSO.OpenTextFile("Test.txt",1)
text=oFile.ReadAll
document.all.DataArea.value=text
oFile.Close
end sub
'----------------------------------------------------------
FUNCTION SaveFile(FileName, DataArea)
CALL FileStat(FileName, msg)
on error resume next
sFile = wkDir & FileName.value
Set wrFile = fSo1.OpenTextFile(sFile, ForWriting)
wrFile.writeline(DataArea.value)
self.close
END FUNCTION
'----------------------------------------------------------
FUNCTION CloseFile(FileName, DataArea)
Call FileStat(FileName, msg)
on error resume next
cFile = wkDir & FileName.value
Set wrFile = fSo1.OpenTextFile(cFile, ForAppending)
wrFile.Close
DataArea.value = ""
FileName.Value = ""
END FUNCTION
'----------------------------------------------------------
FUNCTION QuitEdit
self.close
END FUNCTION
'----------------------------------------------------------
FUNCTION FileStat(FileName, msg)
eFile = wkDir & FileName
IF (fSo1.FileExists(eFile)) THEN
msg = oFile & " exists."
ELSE
on error resume next
END IF
END FUNCTION
'----------------------------------------------------------
</Script>
<body bgcolor="C0C0C0">
<Table>
<Th> Name </Th>
<TR><td><input type="text" name="FileName"></td></TR>
</Table>
<Table border="2">
<TR><td>
<textarea name="DataArea" rows="18" cols=37></textarea>
</td></TR>
<TR><td>
<input type="BUTTON" value="Save" onclick="SaveFile FileName, DataArea">
<input type="BUTTON" value="Cancel" onclick="QuitEdit">
</td></TR>
</Table>
</body>
</html>
答案 0 :(得分:2)
90%的问题是由编写的代码引起的。因此,获得一个好脚本的简单方法是摆脱该代码。 4%的VBScript问题是由 not 引起的,以“Option Explicit”开头。所以让我们补充一点。 4%的VBScript问题是由“On Error Resume Next”隐藏错误引起的。永远不要在全球范围内使用它,也绝不要在它之后最多检查两行。
删除(a)与编辑文件无关的所有内容(图标,其他不相关的HTA属性,调整大小,重复(wkDir,“test.txt”)),看起来像是由程序员每小时支付的内容(调用语句,函数不返回,变量使用一次)和(b) - 目前 - 代码必须编写解决“编辑文件”问题,我们得到:
<html>
<head>
<title>Edit File Demo</title>
<hta:application
id="demo"
></hta>
<script type="text/vbscript">
Option Explicit
Sub Window_OnLoad()
End Sub
Sub SaveFile()
End Sub
</script>
</head>
<body>
<form>
<textarea name="DataArea" rows="18" cols=37></textarea>
<input type="BUTTON" value="Save" onclick="SaveFile">
</form>
</body>
</html>
没有所有的脂肪,将脚本放入头部并将小部件放入表单中就会很自然。
现在需要的代码:我们需要一个文件规范(不仅仅是一个名称)和一个唯一的FileSystemObject(永远不会被命名为s1);如果文件存在,则应将其加载到textarea中;应该保存textarea的内容。所以新的VBScript部分是:
Option Explicit
Const csFSpec = "E:\trials\SoTrials\answers\8841045\hta\29505115.txt"
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Sub Window_OnLoad()
If goFS.FileExists(csFSpec) Then
document.all.DataArea.value = goFS.OpenTextFile(csFSpec).ReadAll()
Else
document.all.DataArea.value = csFSpec & " created"
End If
End Sub
Sub SaveFile()
goFS.CreateTextFile(csFSpec).Write document.all.DataArea.value
End Sub