Vbscript HTA自修改代码?
我想尝试制作一个HTA,在会话之间保存一些数据。文件可能会从一台计算机移动到另一台计算机,因此我不想依赖cookies,它也不会有一些远程服务器来保存数据,因此我希望找到一种方法,使用类似vbscript的脚本将保存的数据写回HTA本身,以便下次应用程序运行时,它已经拥有最新信息 我可能要做的是在代码中指定一行作为变量声明列表,用于初始化应用程序。应用程序中会有某种“保存”按钮,它将读取这些变量的当前状态,编辑hta文件的源代码,特别是在这些行上,并用当前值替换这些值 由于HTA文件本质上只是一个具有不同扩展名的文本文件,我假设有一种方法可以让HTA像其他任何文件一样进行编辑…但我实际上不知道如何进行编辑,或者如何隔离变量将驻留的代码行并对其进行编辑,而无需将整个文件加载到内存中,并在每次需要保存某些内容时保存整个内容。。。我想让事情完全自包含,所以我不想依赖XML或CSV等外部文件来存储会话之间的设置,所以我希望能够将数据嵌入HTA。看一下。如果您使用的是vbscript,则需要Vbscript HTA自修改代码?,vbscript,hta,Vbscript,Hta,我想尝试制作一个HTA,在会话之间保存一些数据。文件可能会从一台计算机移动到另一台计算机,因此我不想依赖cookies,它也不会有一些远程服务器来保存数据,因此我希望找到一种方法,使用类似vbscript的脚本将保存的数据写回HTA本身,以便下次应用程序运行时,它已经拥有最新信息 我可能要做的是在代码中指定一行作为变量声明列表,用于初始化应用程序。应用程序中会有某种“保存”按钮,它将读取这些变量的当前状态,编辑hta文件的源代码,特别是在这些行上,并用当前值替换这些值 由于HTA文件本质上只是一
- 使用打开HTA文件
- 读文件
- 修改要更改的行
- 使用(覆盖设置为True)将新内容写入文件
- 使用打开HTA文件
- 读文件
- 修改要更改的行
- 使用(覆盖设置为True)将新内容写入文件
使用Javascript的过程是相同的,方法略有不同。您确实可以在HTA文件运行时修改它,因为它是解释代码。在浏览器中查看时修改HTML文件的方法与此相同 然而,我不会这样做,除非有令人信服的理由,您必须将所有内容保存在一个文件中如果写入HTA时出现问题,您将得到一个空白文件并丢失所有内容。因此,我建议使用纯文本文件存储数据,并将其包含在HTA中 MyApp.hta:
<!doctype html>
<HTA:APPLICATION
APPLICATIONNAME="MyApp"
SINGLEINSTANCE="yes"
CONTEXTMENU="no"
ICON=""
ID="HTA"
INNERBORDER="no"
NAVIGABLE="no"
SCROLL="yes"
SHOWINTASKBAR="yes"
VERSION="0.0.1"
/>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<title>MyApp</title>
<style type="text/css">
body { font-family: Calibri, Arial; font-size: 20px; }
label { font-weight: bold; }
.settings__container { position: relative; height: 200px; border: 2px dashed #ccc; overflow: hidden; padding-right: 2px; }
#settings { width: 100%; height: 100%; border: 0; }
</style>
</head>
<body>
<label>Settings:</label>
<div class="settings__container">
<textarea id="settings"></textarea>
</div>
<button id="save-settings__button">Save Now</button>
<script type="text/javascript">
(function() {
var settingsElement = document.getElementById('settings'),
settingsFile = "MyApp.settings.txt",
io = new ActiveXObject('Scripting.FileSystemObject');
function loadSettings() {
try {
var file = io.OpenTextFile(settingsFile, 1),
data = file.ReadAll();
file.Close();
settingsElement.value = data;
} catch(e) {
// Failed to load settings; settings file may not exist yet.
}
}
function saveSettings(data) {
var file = io.OpenTextFile(settingsFile, 2, true);
file.Write(data);
file.Close();
}
// Assuming IE9+
document.getElementById('save-settings__button').addEventListener('click', function(e) {
saveSettings(settingsElement.value);
});
// Load the settings file
addEventListener('load', function(e) {
loadSettings();
});
// Save the settings on exit
addEventListener('unload', function(e) {
saveSettings(settingsElement.value);
});
})();
</script>
</body>
</html>
MyApp
正文{字体系列:Calibri,Arial;字体大小:20px;}
标签{字体大小:粗体;}
.settings__容器{位置:相对;高度:200px;边框:2px虚线35; ccc;溢出:隐藏;填充右侧:2px;}
#设置{宽度:100%;高度:100%;边框:0;}
设置:
现在保存
(功能(){
var settingsElement=document.getElementById('settings'),
settingsFile=“MyApp.settings.txt”,
io=新的ActiveXObject('Scripting.FileSystemObject');
函数loadSettings(){
试一试{
var file=io.OpenTextFile(设置文件,1),
data=file.ReadAll();
file.Close();
settingsElement.value=数据;
}捕获(e){
//未能加载设置;设置文件可能尚不存在。
}
}
功能保存设置(数据){
var file=io.OpenTextFile(设置文件,2,true);
文件写入(数据);
file.Close();
}
//假设IE9+
document.getElementById('save-settings__按钮')。addEventListener('click',函数(e){
保存设置(settingsElement.value);
});
//加载设置文件
addEventListener('load',函数(e){
加载设置();
});
//退出时保存设置
addEventListener('unload',函数(e){
保存设置(settingsElement.value);
});
})();
您确实可以在HTA文件运行时修改它,因为它是解释代码。在浏览器中查看时修改HTML文件的方法与此相同
然而,我不会这样做,除非有令人信服的理由,您必须将所有内容保存在一个文件中如果写入HTA时出现问题,您将得到一个空白文件并丢失所有内容。因此,我建议使用纯文本文件存储数据,并将其包含在HTA中
MyApp.hta:
<!doctype html>
<HTA:APPLICATION
APPLICATIONNAME="MyApp"
SINGLEINSTANCE="yes"
CONTEXTMENU="no"
ICON=""
ID="HTA"
INNERBORDER="no"
NAVIGABLE="no"
SCROLL="yes"
SHOWINTASKBAR="yes"
VERSION="0.0.1"
/>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<title>MyApp</title>
<style type="text/css">
body { font-family: Calibri, Arial; font-size: 20px; }
label { font-weight: bold; }
.settings__container { position: relative; height: 200px; border: 2px dashed #ccc; overflow: hidden; padding-right: 2px; }
#settings { width: 100%; height: 100%; border: 0; }
</style>
</head>
<body>
<label>Settings:</label>
<div class="settings__container">
<textarea id="settings"></textarea>
</div>
<button id="save-settings__button">Save Now</button>
<script type="text/javascript">
(function() {
var settingsElement = document.getElementById('settings'),
settingsFile = "MyApp.settings.txt",
io = new ActiveXObject('Scripting.FileSystemObject');
function loadSettings() {
try {
var file = io.OpenTextFile(settingsFile, 1),
data = file.ReadAll();
file.Close();
settingsElement.value = data;
} catch(e) {
// Failed to load settings; settings file may not exist yet.
}
}
function saveSettings(data) {
var file = io.OpenTextFile(settingsFile, 2, true);
file.Write(data);
file.Close();
}
// Assuming IE9+
document.getElementById('save-settings__button').addEventListener('click', function(e) {
saveSettings(settingsElement.value);
});
// Load the settings file
addEventListener('load', function(e) {
loadSettings();
});
// Save the settings on exit
addEventListener('unload', function(e) {
saveSettings(settingsElement.value);
});
})();
</script>
</body>
</html>
MyApp
正文{字体系列:Calibri,Arial;字体大小:20px;}
标签{字体大小:粗体;}
.settings__容器{位置:相对;高度:200px;边框:2px虚线35; ccc;溢出:隐藏;填充右侧:2px;}
#设置{宽度:100%;高度:100%;边框:0;}
设置:
现在保存
(功能(){
var settingsElement=document.getElementById('settings'),
settingsFile=“MyApp.settings.txt”,
io=新的ActiveXObject('Scripting.FileSystemObject');
函数loadSettings(){
试一试{
var file=io.OpenTextFile(设置文件,1),
data=file.ReadAll();
file.Close();
settingsElement.value=数据;
}捕获(e){
//未能加载设置;设置文件可能尚不存在。
}
}
功能保存设置(数据){
var file=io.OpenTextFile(设置文件,2,true);
文件写入(数据);
file.Close();
}
//假设IE9+
document.getElementById('save-settings__按钮')。addEventListener('click',函数(e){
保存设置(settingsElement.value);
});
//加载设置文件
addEventListener('load',函数(e){
加载设置();
});
//退出时保存设置
addEventListener('unload',函数(e){
存储设置