2017-11-09 26 views
0

세션간에 데이터를 보유하는 HTA를 만들려고합니다. 파일이 한 컴퓨터에서 다른 컴퓨터로 이동할 수 있으므로 쿠키를 사용하지 않고 데이터를 저장할 원격 서버가 없기 때문에 vbscript와 같은 스크립팅을 사용하여 데이터를 저장하는 방법을 찾는 것이 좋습니다. 데이터를 다시 HTA 자체에 저장하므로 다음에 응용 프로그램이 실행될 때 이미 최신 정보를 갖습니다.HTA 자체 수정 코드?

내가 할 것으로 예상되는 것은 응용 프로그램을 초기화하는 데 사용될 변수 선언 목록으로 코드의 줄을 바칩니다. 해당 변수의 현재 상태를 읽고 해당 라인에서 hta 파일의 소스 코드를 편집하고 현재 값이 무엇이든 값을 바꿀 응용 프로그램에 "저장"버튼이 있습니다.

HTA 파일은 본질적으로 다른 확장자를 가진 텍스트 파일이기 때문에 다른 파일과 마찬가지로 HTA 자체를 편집 할 수있는 방법이 있다고 가정합니다. 그러나 실제로 어떻게해야하는지는 모르지만, 또는 변수가 상주 할 코드 줄을 분리하고 전체 파일을 메모리에로드하지 않고도 편집하여 전체를 저장할 때마다 편집 할 수있는 방법을 제공합니다. 포함되어 있으므로 세션간에 설정을 저장하는 XML 또는 CSV 같은 외부 파일에 의존하고 싶지 않으므로 데이터를 HTA에 포함 할 수 있어야합니다.

답변

0

FileSystemObject을 살펴보십시오. 당신이 VBScript를를 사용하는 경우, 당신은 당신이이

  • CreateTextFile와 파일에 새로운 내용을 쓰기 변경하려는 행을 수정 파일
  • 읽기

    • 열기에 OpenTextFile
    • 와 HTA 파일을 필요 (덮어 쓰기를 True로 설정)

    자바를 사용하는 경우 절차는 동일하지만 방법이 약간 다릅니다.

  • +0

    나는 아직 그것을 시도하지 않은,하지만 난 이미 열려있는 동안 HTA 파일을 수정하려고하면 ... 확인하고 싶어 저장 하시겠습니까? 아니면 파일이 잠겨 있음을 보여줄 것입니까? IE는 파일을 읽기 전용으로 열어서 메모리에 처음로드 될 때를 제외하고는 파일을 잠그지 않기 때문에 이미 열어 놓은 상태에서 HTA를 안전하게 저장할 수 있다고 가정합니다. 내가 작동하지 못하는 많은 코드를 작성하기 전에 꼭 확인하십시오. – Ceetch

    1

    HTA 파일은 해석되는 코드이기 때문에 실행 중에 수정할 수 있습니다. 브라우저에서 볼 때 HTML 파일을 수정할 수있는 것과 같은 방식입니다.

    그러나 나는 모든 것을 1 개의 파일로 유지해야하는 몇 가지 이유가 없으면 그렇게하지 않을 것입니다. 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>