Option Explicit Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long 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 LongPublic Function GetINISetting(Section As String, KeyName As String, DefaultValue As String) As String Dim X As Long Dim Holder As String * 255 X = GetPrivateProfileString(Section, KeyName, DefaultValue, Holder, 254, App.Path & "\" & App.Title & ".ini") GetINISetting = Left$(Holder, InStr(Holder, Chr$(0)) - 1)End FunctionPublic Sub SaveINISetting(Section As String, KeyName As String, KeyValue As String) Dim X As Long X = WritePrivateProfileString(Section, KeyName, KeyValue, App.Path & "\" & App.Title & ".ini") End Sub
很有必要的操作ini 加密 处理加密 Private Function Encrypt(varPass As String, varFile As String) If Dir(varFile) <> "" Then: Kill varFile Dim varEncrypt As String * 50 Dim varTmp As Double Open varFile For Random As #1 Len = 50 For I = 1 To Len(varPass) varTmp = Asc(Mid$(varPass, I, 1)) varEncrypt = Str$(((((varTmp * 1.5) / 2.1113) * 1.111119) * I)) Put #1, I, varEncrypt Next I Close #1 End Function处理加密 Private Function Decrypt(varFile As String) As String Open varFile For Random As #1 Len = 50 Dim varReturn As String * 50 Dim varConvert As Double Dim varFinalPass As String Dim varKey As Integer For I = 1 To LOF(1) / 50 Get #1, I, varReturn varConvert = Val(Trim(varReturn)) varConvert = ((((varConvert / 1.5) * 2.1113) / 1.111119) / I) varFinalPass = varFinalPass & Chr(varConvert) Next I Decrypt = varFinalPass Close #1 End Function 使用實例: Private Sub Command1_Click() If Trim(Text3.Text) = "" Then MsgBox "請先輸入加密檔名稱", 16, "錯誤" Exit Sub End If Encrypt Text1.Text, Text3.Text '將 Text1 中的字存到 Text3 檔案中 End SubPrivate Sub Command2_Click() If Dir(Trim(Text3.Text)) = "" Or Trim(Text3.Text) = "" Then MsgBox "加密檔名稱錯誤", 16, "錯誤" Exit Sub End If Text2.Text = Decrypt(Text3.Text) '將從 Text3 檔案中讀出的字轉譯放回 Text2 End Sub
'请於form中放3个TextBox,一个CommandBox 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 Declare Function WritePrivateProfileString Lib "kernel32" _ Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, ByVal lpString As Any, _ ByVal lpFileName As String) As LongPrivate Sub Command1_Click() Dim success As Long success = WritePrivateProfileString("MyApp", "text1", Text1.Text, "c:\aa.ini") '叁数一 Section Name '叁数二 於.ini中的项目 '叁数三 项目的内容 '叁数四 .ini文件的名称 success = WritePrivateProfileString("MyApp", "text2", Text2.Text, "c:\aa.ini") success = WritePrivateProfileString("MyApp2", "text3", Text3.Text, "c:\aa.ini") End SubPrivate Sub Form_load() Dim ret As Long Dim buff As String buff = String(255, 0) ret = GetPrivateProfileString("Myapp", "text1", "text1", buff, 256, "c:\aa.ini") '若.ini MyApp中无text1,则采用叁数三的值 Text1.Text = buff buff = String(255, 0) ret = GetPrivateProfileString("Myapp", "text2", "text2", buff, 256, "c:\aa.ini") Text2.Text = buff buff = String(255, 0) ret = GetPrivateProfileString("Myapp2", "text3", "text3", buff, 256, "c:\aa.ini") Text3.Text = buff End Sub
由于Ini作为一个Windows配置文件,可以放在本地路径,现在看一个简单的例子。 1.声明: Declare Function GetPrivateProfileString Lib "Kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, lpKeyName As Any, ByVal lpDefault As String, ByVal lpRetunedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Declare Function SaveINI Lib "Kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lplFileName As String) As Long Function GetINI(AppName As String, KeyName As String, filename As String) As String Dim RetStr As String RetStr = String(10000, Chr(0)) GetINI = Left(RetStr, GetPrivateProfileString(AppName, ByVal KeyName, "", RetStr, Len(RetStr), filename)) End Function2.调用: 读:Rtn=GetINI(appname, keyname, filename) 写:SaveINI appname,keyname,string,filename3.解释:例如INI文件中有这么一块:[main] .........这就是appname,不包括[]号 FontColor=801085 ............FontColor就是KeyName,801085就是String而你的INI的绝对路径就是Filename。现在可以用INI文件保存你的设置啦。
自己搜索一下csdn以前的帖子,保证有你要问的问题的答案:)
【函数】 GetPrivateProfileString【操作系统】 Win9X:Yes WinNT:Yes【声明】 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【说明】 为初始化文件中指定的条目取得字串 【返回值】 Long,复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符。如lpReturnedString缓冲区不够大,不能容下全部信息,就返回nSize-1(若lpApplicationName或lpKeyName为NULL,则返回nSize-2) 【其它】 在vb的api文本查看器中复制的声明为: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【参数表】 lpApplicationName - String,欲在其中查找条目的小节名称。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载这个ini文件所有小节的列表 lpKeyName ------ String,欲获取的项名或条目名。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载指定小节所有项的列表 lpDefault ------ String,指定的条目没有找到时返回的默认值。可设为空("") lpReturnedString - String,指定一个字串缓冲区,长度至少为nSize nSize ---------- Long,指定装载到lpReturnedString缓冲区的最大字符数量 lpFileName ----- String,初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件
抢分的例子: 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 Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Private Sub Form_Load() Dim Ret As String, NC As Long 'Write the setting to the file (c:\test.ini) under ' Project1 -> Keyname WritePrivateProfileString App.Title, "KeyName", "This is the value", "c:\test.ini" 'Create a buffer Ret = String(255, 0) 'Retrieve the string NC = GetPrivateProfileString(App.Title, "KeyName", "Default", Ret, 255, "C:\test.ini") 'NC is the number of characters copied to the buffer If NC <> 0 Then Ret = Left$(Ret, NC) 'Show our string MsgBox Ret 'Delete the file Kill "c:\test.ini" End Sub
可用Windows API 函数访问INI文件 1.GetProfileInt 2.GetProfileSection 3.GetProfileString 4.WriteProfileSection 5.WriteProfileString
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
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 LongPublic Function GetINISetting(Section As String, KeyName As String, DefaultValue As String) As String Dim X As Long
Dim Holder As String * 255 X = GetPrivateProfileString(Section, KeyName, DefaultValue, Holder, 254, App.Path & "\" & App.Title & ".ini")
GetINISetting = Left$(Holder, InStr(Holder, Chr$(0)) - 1)End FunctionPublic Sub SaveINISetting(Section As String, KeyName As String, KeyValue As String)
Dim X As Long
X = WritePrivateProfileString(Section, KeyName, KeyValue, App.Path & "\" & App.Title & ".ini")
End Sub
处理加密
Private Function Encrypt(varPass As String, varFile As String)
If Dir(varFile) <> "" Then: Kill varFile
Dim varEncrypt As String * 50
Dim varTmp As Double
Open varFile For Random As #1 Len = 50 For I = 1 To Len(varPass)
varTmp = Asc(Mid$(varPass, I, 1))
varEncrypt = Str$(((((varTmp * 1.5) / 2.1113) * 1.111119) * I))
Put #1, I, varEncrypt
Next I
Close #1
End Function处理加密
Private Function Decrypt(varFile As String) As String
Open varFile For Random As #1 Len = 50
Dim varReturn As String * 50
Dim varConvert As Double
Dim varFinalPass As String
Dim varKey As Integer For I = 1 To LOF(1) / 50
Get #1, I, varReturn
varConvert = Val(Trim(varReturn))
varConvert = ((((varConvert / 1.5) * 2.1113) / 1.111119) / I)
varFinalPass = varFinalPass & Chr(varConvert)
Next I
Decrypt = varFinalPass
Close #1
End Function
使用實例:
Private Sub Command1_Click()
If Trim(Text3.Text) = "" Then
MsgBox "請先輸入加密檔名稱", 16, "錯誤"
Exit Sub
End If
Encrypt Text1.Text, Text3.Text '將 Text1 中的字存到 Text3 檔案中
End SubPrivate Sub Command2_Click()
If Dir(Trim(Text3.Text)) = "" Or Trim(Text3.Text) = "" Then
MsgBox "加密檔名稱錯誤", 16, "錯誤"
Exit Sub
End If
Text2.Text = Decrypt(Text3.Text) '將從 Text3 檔案中讀出的字轉譯放回 Text2
End Sub
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 Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As LongPrivate Sub Command1_Click()
Dim success As Long
success = WritePrivateProfileString("MyApp", "text1", Text1.Text, "c:\aa.ini")
'叁数一 Section Name
'叁数二 於.ini中的项目
'叁数三 项目的内容
'叁数四 .ini文件的名称
success = WritePrivateProfileString("MyApp", "text2", Text2.Text, "c:\aa.ini")
success = WritePrivateProfileString("MyApp2", "text3", Text3.Text, "c:\aa.ini")
End SubPrivate Sub Form_load()
Dim ret As Long
Dim buff As String
buff = String(255, 0)
ret = GetPrivateProfileString("Myapp", "text1", "text1", buff, 256, "c:\aa.ini")
'若.ini MyApp中无text1,则采用叁数三的值
Text1.Text = buff
buff = String(255, 0)
ret = GetPrivateProfileString("Myapp", "text2", "text2", buff, 256, "c:\aa.ini")
Text2.Text = buff
buff = String(255, 0)
ret = GetPrivateProfileString("Myapp2", "text3", "text3", buff, 256, "c:\aa.ini")
Text3.Text = buff
End Sub
1.声明:
Declare Function GetPrivateProfileString Lib "Kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, lpKeyName As Any, ByVal lpDefault As String, ByVal lpRetunedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function SaveINI Lib "Kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lplFileName As String) As Long
Function GetINI(AppName As String, KeyName As String, filename As String) As String
Dim RetStr As String
RetStr = String(10000, Chr(0))
GetINI = Left(RetStr, GetPrivateProfileString(AppName, ByVal KeyName, "", RetStr, Len(RetStr), filename))
End Function2.调用:
读:Rtn=GetINI(appname, keyname, filename)
写:SaveINI appname,keyname,string,filename3.解释:例如INI文件中有这么一块:[main] .........这就是appname,不包括[]号
FontColor=801085 ............FontColor就是KeyName,801085就是String而你的INI的绝对路径就是Filename。现在可以用INI文件保存你的设置啦。
GetPrivateProfileString【操作系统】
Win9X:Yes
WinNT:Yes【声明】
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【说明】 为初始化文件中指定的条目取得字串 【返回值】 Long,复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符。如lpReturnedString缓冲区不够大,不能容下全部信息,就返回nSize-1(若lpApplicationName或lpKeyName为NULL,则返回nSize-2) 【其它】 在vb的api文本查看器中复制的声明为: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【参数表】
lpApplicationName - String,欲在其中查找条目的小节名称。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载这个ini文件所有小节的列表 lpKeyName ------ String,欲获取的项名或条目名。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载指定小节所有项的列表 lpDefault ------ String,指定的条目没有找到时返回的默认值。可设为空("") lpReturnedString - String,指定一个字串缓冲区,长度至少为nSize nSize ---------- Long,指定装载到lpReturnedString缓冲区的最大字符数量 lpFileName ----- String,初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件
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 Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Sub Form_Load()
Dim Ret As String, NC As Long
'Write the setting to the file (c:\test.ini) under
' Project1 -> Keyname
WritePrivateProfileString App.Title, "KeyName", "This is the value", "c:\test.ini"
'Create a buffer
Ret = String(255, 0)
'Retrieve the string
NC = GetPrivateProfileString(App.Title, "KeyName", "Default", Ret, 255, "C:\test.ini")
'NC is the number of characters copied to the buffer
If NC <> 0 Then Ret = Left$(Ret, NC)
'Show our string
MsgBox Ret
'Delete the file
Kill "c:\test.ini"
End Sub
1.GetProfileInt
2.GetProfileSection
3.GetProfileString
4.WriteProfileSection
5.WriteProfileString