VB6.0读取INI参数,解决了中文后面的多出空格的问题,测试OK
2025-2-20 乱云飞
Option Explicit
' API函数声明,用于读取INI文件
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Sub Form_Load()
Me.Hide
Dim iniFilePath As String
Dim 文本 As String
Dim 坐标X As String
Dim 坐标Y As String
Dim 字体 As String
Dim 颜色 As String
Dim 字号 As String
Dim 透明 As String
Dim 时间 As String
' 指定INI文件路径
iniFilePath = App.Path & "\logo.ini"
' 读取INI文件中的参数
文本 = ReadIniValue("logo", "文本", iniFilePath)
坐标X = ReadIniValue("logo", "坐标X", iniFilePath)
坐标Y = ReadIniValue("logo", "坐标Y", iniFilePath)
字体 = ReadIniValue("logo", "字体", iniFilePath)
颜色 = ReadIniValue("logo", "颜色", iniFilePath)
字号 = ReadIniValue("logo", "字号", iniFilePath)
透明 = ReadIniValue("logo", "透明", iniFilePath)
时间 = ReadIniValue("logo", "时间", iniFilePath)
' 生成完整的命令行
Dim command As String
command = "start text.dll" & _
" /m:" & 文本 & _
" /x:" & 坐标X & _
" /y:" & 坐标Y & _
" /f:" & 字体 & _
" /fh:" & 字号 & _
" /ftc:""" & 颜色 & """" & _
" /o:" & 透明 & _
" /t:" & 时间 & _
" /fi:0 /fbc:""255 255 255"" /bc:""0 0 0"""
'在窗口上显示生成的命令
'Me.Caption = "生成命令行"
'Me.AutoRedraw = True
'Me.Print "生成的命令:"
'Me.Print command
' 将生成的命令保存到1.bat文件中
Dim FilePath As String
FilePath = App.Path & "\1.bat"
Open FilePath For Output As #1
Print #1, command
Close #1
'MsgBox "命令已保存到 " & FilePath, vbInformation, "保存成功"
Shell FilePath, vbHide '执行命令并显示命令行窗口
End
End Sub
' 读取INI文件中的指定键值
Private Function ReadIniValue(ByVal Section As String, ByVal Key As String, ByVal FilePath As String) As String
Dim Buffer As String
Dim BufferSize As Long
Dim RetVal As Long
Buffer = String$(255, 0) ' 初始化缓冲区
BufferSize = Len(Buffer)
'调用API函数读取INI文件中的值
RetVal = GetPrivateProfileString(Section, Key, "", Buffer, BufferSize, FilePath)
'根据chr(0)的位置来截取字符串
ReadIniValue = Left$(Buffer, InStr(Buffer, Chr(0)) - 1)
End Function
本文链接:http://80c.cc/ez/812.html评论:
所以,不能根据API函数返回的字符数来截取字符串,而应该自己检测chr(0)首次出现的位置来截取:
Public Function GetFromINI(AppName As String, KeyName As String, FileName As String) As String
Dim RetStr As String
RetStr = String(255, Chr(0))
GetPrivateProfileString AppName, ByVal KeyName, "", RetStr, Len(RetStr), FileName
GetFromINI = Left(RetStr, InStr(RetStr, Chr(0)) - 1)
End Function