我创建了一个小型HTML应用程序来加密纯文本。实际的加密软件是用python编写的,脚本的工作方式正如我所希望的那样。我只是提供一个使用HTA的界面,问题出在那里。
我的HTA应用程序使用以下代码将用户的输入写入文本文件:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile('blah.txt',ForWriting,true);
f.WriteLine(t);
f.WriteLine(text);
f.Close();
然后,它运行python脚本(使用py2exe生成了一个可执行文件):
var shell = new ActiveXObject("WScript.shell");
shell.run("tesvc.exe");
python脚本读取文本文件,加密文本,然后将密文写回文本文件。由于这需要几分之一秒,我使用以下代码从文件中读取。
var fso = new ActiveXObject("Scripting.FileSystemObject");
var out;
do
{
setTimeout('',1000);
var f = fso.OpenTextFile('blah.txt',ForReading);
if(f.AtEndOfStream)
{
break;
}
out = f.ReadLine(); //Error here.
f.Close();
}
while(!isdone(out));
var f = fso.OpenTextFile('blah.txt',ForReading);
var out = f.ReadLine(); //Or error here.
如果第一行是=='e'或者是=='d',则python脚本尚未完成其工作。如果脚本已完成其工作,则isdone()函数返回true。
我遇到的问题是脚本间歇性地给我一个'输入过去的文件结束错误',因为其中一个var out = f.ReadLine();声明。因为我在打开它之后正在读取文件,并且我还在检查TextStream是否已经到达它的结尾,它可能无法到达结束你能否告诉我导致错误的是什么?
P.S。我知道我使用的解决方案非常粗糙,但请不要对此发表评论。