捐血一袋救人一命

2012年2月1日 星期三

如何儲存 HTA 應用程式視窗位置

當程式執行時,Window物件被載入,就會執行 Window_OnLoad 子程式

當程式結束時,就會觸發Window_OnUnload 事件

簡單的說,利用這兩個事件,在 HTA 程式結束前,將目前視窗位置存入文字檔

然後在程式一載入時,開啟文字檔,並將文字檔內的參數,設定到相關的變數去。

<SCRIPT Language="VBScript">
    Dim intLeft
    Dim intTop

    Sub Window_onLoad
        window.offscreenBuffering = True

        Const ForReading = 1
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile("HTA.ini", ForReading)
        strContents = objFile.ReadAll
        objFile.Close

        arrContents = Split(strContents, ",")
        window.moveTo arrContents(0), arrContents(1)
    End Sub

    Sub Window_onBeforeUnLoad
        intLeft = window.screenLeft
        intTop = window.screenTop

        Const ForWriting = 2
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile("HTA.ini", ForWriting)
        objFile.WriteLine intLeft & "," & intTop
        objFile.Close
    End Sub
</SCRIPT>

window.offscreenBuffering = True

讓視窗移動到初始化位置時,不會有跳動的感覺

Const ForReading = 1
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile("HTA.ini", ForReading)
        strContents = objFile.ReadAll
        objFile.Close

開啟 HTA.ini 檔案(讀取模式,必須存在 HTA.ini 跟程式在同一目錄下)

並將檔案內容讀到 strContents 變數中,然後關閉檔案

arrContents = Split(strContents, ",")

使用 Split 函數,將變數 strContent 內容,以逗號做剖析,然後一一存入 arrContents 陣列中(陣列駐標起始值為 0)

window.moveTo arrContents(0), arrContents(1)

將視窗移到到上次結束程式時存入的位置

intLeft = window.screenLeft
intTop = window.screenTop

讀取視窗目前位置,分別存入 intLeft、intTop 兩個變數中

Const ForWriting = 2
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile("HTA.ini", ForWriting)
        objFile.WriteLine intLeft & "," & intTop
        objFile.Close

開啟 HTA.ini 檔案(寫入模式)

將 intLeft 以及 intTop 存入

0 意見: