Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript HTA自修改代码?_Vbscript_Hta - Fatal编程技术网

Vbscript HTA自修改代码?

Vbscript HTA自修改代码?,vbscript,hta,Vbscript,Hta,我想尝试制作一个HTA,在会话之间保存一些数据。文件可能会从一台计算机移动到另一台计算机,因此我不想依赖cookies,它也不会有一些远程服务器来保存数据,因此我希望找到一种方法,使用类似vbscript的脚本将保存的数据写回HTA本身,以便下次应用程序运行时,它已经拥有最新信息 我可能要做的是在代码中指定一行作为变量声明列表,用于初始化应用程序。应用程序中会有某种“保存”按钮,它将读取这些变量的当前状态,编辑hta文件的源代码,特别是在这些行上,并用当前值替换这些值 由于HTA文件本质上只是一

我想尝试制作一个HTA,在会话之间保存一些数据。文件可能会从一台计算机移动到另一台计算机,因此我不想依赖cookies,它也不会有一些远程服务器来保存数据,因此我希望找到一种方法,使用类似vbscript的脚本将保存的数据写回HTA本身,以便下次应用程序运行时,它已经拥有最新信息

我可能要做的是在代码中指定一行作为变量声明列表,用于初始化应用程序。应用程序中会有某种“保存”按钮,它将读取这些变量的当前状态,编辑hta文件的源代码,特别是在这些行上,并用当前值替换这些值

由于HTA文件本质上只是一个具有不同扩展名的文本文件,我假设有一种方法可以让HTA像其他任何文件一样进行编辑…但我实际上不知道如何进行编辑,或者如何隔离变量将驻留的代码行并对其进行编辑,而无需将整个文件加载到内存中,并在每次需要保存某些内容时保存整个内容。。。我想让事情完全自包含,所以我不想依赖XML或CSV等外部文件来存储会话之间的设置,所以我希望能够将数据嵌入HTA。

看一下。如果您使用的是vbscript,则需要

  • 使用打开HTA文件
  • 读文件
  • 修改要更改的行
  • 使用(覆盖设置为True)将新内容写入文件
使用Javascript的过程是相同的,方法略有不同。

请查看。如果您使用的是vbscript,则需要

  • 使用打开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){
存储设置