Code: Select all
; ==============================================================================
; 功能: 读取 ini 文件的 [Settings] 区段,脚本退出时自动保存
; (ini 文件名与脚本文件同名)
; ==============================================================================
/*
; 示例:
ReadSettings( { x : ""
, y : ""
, key3: "默认值" } )
Gui, Add, Edit, w300 vx , % x
Gui, Add, Edit, wp vy , % y
Gui, Add, Edit, wp vkey3, % key3
Gui, Show
Return
GuiClose:
ExitApp
*/
; ==============================================================================
ReadSettings(obj_default = "") {
static iniFile := SubStr(A_ScriptFullPath, 1, -4) ".ini"
static obj_keyList := {}
global
local data, pos, k, v
; =================================
; 脚本退出时自动保存 ini
; =================================
static _ := { base: {__Delete: "ReadSettings"} }
If !_ {
Gui, Submit, NoHide
For k, v in obj_keyList
data .= k "=" %k% "`r`n"
If data
IniWrite, % data, % iniFile, Settings
Return
}
; =================================
; 读取 ini
; =================================
For k, v in obj_default
%k% := v, obj_keyList[k] := ""
If FileExist(iniFile) {
IniRead, data, % iniFile, Settings
If data {
Loop, Parse, data, `n, `r
If ( pos := InStr(A_LoopField, "=") )
k := SubStr(A_LoopField, 1, pos-1)
, v := SubStr(A_LoopField, pos+1)
, obj_keyList[k] := "", %k% := v
}
}
}