|
|
楼主 |
发表于 2026-1-17 19:20:19
|
显示全部楼层
本帖最后由 Bluebells 于 2026-5-3 13:57 编辑
- ;IniRead 有五个参数, 第一个参数为目标 .ini 完整文件名, 第二个参数为节名, 第三个参数为键名, 第四个参数为默认值, 第五个参数为存放读取的值的变量
- ;当无法读取目标键的值时, 其返回值(第五个参数变量值)将为默认值(第四个参数定义的值)
- _SUB IniRead
- TEAM ENVI &FileName=%~1| ENVI &SectionName=%~2| ENVI &KeyName=%~3| ENVI &DefValue=%~4
- FIND %&FileName%=,EXIT _SUB
- FIND %&SectionName%=,EXIT _SUB
- FIND %&KeyName%=,EXIT _SUB
- FIND %&DefValue%=,EXIT _SUB
- ENVI$# &ValueName=*65535 0
- CALL $--qd --ret:&ret Kernel32.dll,GetPrivateProfileStringW,$%&SectionName%,$%&KeyName%,$%&DefValue%,*&ValueName,#65535,$%&FileName%
- ENVI-ret %~5=%&ValueName%
- _END
- ;IniWrite 有四个参数, 第一个参数为目标 .ini 完整文件名, 第二个参数为节名, 第三个参数为键名, 第四个参数为值名, 第五个参数为返回值(若返回零则写入失败)
- ;其中第四个和第五个参数为可选, 当第四个参数留空时, 将移除目标键的值
- _SUB IniWrite
- TEAM ENVI &FileName=%~1| ENVI &SectionName=%~2| ENVI &KeyName=%~3| ENVI &ValueName=%~4
- FIND %&FileName%=,EXIT _SUB
- FIND %&SectionName%=,EXIT _SUB
- FIND %&KeyName%=,EXIT _SUB
- CALL $--qd --ret:&ret Kernel32.dll,WritePrivateProfileStringW,$%&SectionName%,$%&KeyName%,$%&ValueName%,$%&FileName%
- ENVI-ret %~5=%&ret%
- _END
- ;示例
- IniRead "D:\Example\Config.ini" "Settings" "Simple" "" &Value
- MESS %&Value%
- IniWrite "D:\Example\Config.ini" "Settings" "Simple" "Value" &RetVal
- MESS %&RetVal%
复制代码 PS: mdyblog 老大的 PECMD 的示例代码(readini.wcs)中有读取 Ini 文本文件的封装代码段, 不过挺复杂的; 将 IniWrite 封装函数内置到 PECMD 可执行文件里时好像需要将代码文件的文本编码转换为 ANSI 编码, 否则可能会导致 PECMD 在执行该封装函数时卡死
|
|