发信人: kim-ryo()
整理人: winsy(2003-03-05 15:33:54), 站内信件
|
【 在 doll_paul 的大作中提到:】
:请问各位:WritePrivateProfileSection和GetPrivateProfileSection这个API如何运用呀?最后有源码~
:
:(返回值是数组,还是什么啊?我不明白,谢谢了~)
:......
源自本人的VB-API葵花宝典!!!
0.写入,删除win.ini文件中的条目
申明方式:
Declare Function WriteFile Lib "kernel32" Alias "WriteProfileString
A" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lp
szString As String) As Long
*********
调用方式:
WriteFile "123","123","234"
[注:lpszSection为段名,lpszKeyName为键名,lpszString键值;如lpszString的值
用"vbNullString"关键字,且上一参数(lpszKeyName)的名称为同一"Section"中的
所有项,则删除这一名称(Section名同理).]
----------------------------------------------------------------------
----------------------
11.读取win.ini中的整数数据
申明方式:
Declare Function GetProfileInt Lib "kernel32" Alias "GetProfileIntA
" (ByVal lpAppName As String,ByVal lpKeyName As String,ByVal nDefault
As Long)As Long
*********
调用方式:
Dim Value As Long
Value=GetProfileInt("Windows","DoubleClickSpeed",0)
(注:lpAppName为Section的名称;lpKeyName为键的名称;nDefault反回调用是否成
功.)
----------------------------------------------------------------------
----------------------
12.读取win.ini中某一Section的所有键和键值
申明方式:
Declare Function GetProFileSec Lib "kernel32" Alias "GetProfileSect
ionA" (byVal lpAppName As String,ByVal lpReturnedString As String,ByV
al nSize As Long)As Long
*********
调用方式:
Dim Txt As String, pos As Long
Txt = String(32767, 0)
GetProFileSec "windows", Txt, Len(Txt)
pos = InStr(Txt, Chr(0))
While pos > 1
MsgBox Txt ' "MsgBox"会以Chr(0)作为输出标志
Txt = Mid(Txt, pos + 1)
pos = InStr(Txt, Chr(0))
Wend
(注:lpAppName为Section的名称;lpReturnedString为读取所有的键和键值[Key 名
称=键值],其之间用Chr(0)作为分割符[该字符串同样以Chr(0)作为结尾];nSize为传
入下一键值的长度;返回值为数据字节长度,且不以Chr(0)结尾.)
----------------------------------------------------------------------
----------------------
13.读取win.ini文件中的字符串
申明方式:
Declare Function GetProfileString Lib "kernel32"
Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName
As String, ByVal lpDefault As String, ByVal lpReturnedString As Strin, ByVal nSize As Long) As Long
*********
调用方式:
Dim S As String, Length As Long
S = String(1024, 0)
Length = GetProfileString("windows", "programs", "", S, Len(S))
S = Left(S, Length)
Print S
Dim pos As Integer
S = String(1024, 0)
Length = GetProfileString("windows", vbNullString, "", S, Len(S))
S = Left(S, Length)
While Len(S) > 0
pos = InStr(S, Chr(0))
Print Left(S, pos - 1)
S = Mid(S, pos + 1)
Wend
S = String(1024, 0)
Length = GetProfileString(vbNullString, vbNullString, "", S, Len(S))
S = Left(S, Length)
While Len(S) > 0
pos = InStr(S, Chr(0))
Print Left(S, pos - 1)
S = Mid(S, pos + 1)
Wend
(注:lpAppName,lpKeyName,lpReturnedString,nSize的作用均同上,lpDefault的
作用同nDefault;当lpAppName和lpKeyName的传入值为vbNullString时,则返回所有
的Section值;当lpAppName的值不为vbNullString且lpKeyName的值为
vbNullString时,则返回该Section的所有Key和Key值.)
--------------------------------------------------------------------------------------------
14.写入整批数据到win,ini文件中
申明方式:
Declare Function WriteProfileSection Lib "kernel32" Alias "WritePro
fileSectionA" (ByVal lpAppName As String, ByVal
lpString As String) As Long
*********
调用方式:
Dim S As String, Success As Boolean
S = "Key1=Value1" & Chr(0) & _
"Key2=Value2" & Chr(0) & _
"Key3=Value3" & Chr(0) & Chr(0)
Success = WriteProfileSection("ProfileTest", S)
If Success Then
MsgBox "写入成功!"
Else
MsgBox "写入失败!"
End If
(注:写入结果为"[ProfileTest]")
Key1=Value1
Key2=Value2
Key3=Value3
----------------------------------------------------------------------
酷吧? |
|