※サンプルソースのダウンロードができます。VB6_INI.lzh・VBNET_INI.lzh
VB6
Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpAppName 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 lpAppName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Public Function GetIni(ApName As String, KeyName As String, _
Default As String, Filename As String _
) As String
'INIファイルから参照したいキーの値を取得する
'ApName : セクション名
'KeyName : 項目名
'Default : 項目が存在しない場合の初期値
'FileName : 参照ファイル名
'****************************************
Dim strResult As String
strResult = Space$(255)
Call GetPrivateProfileString(ApName, KeyName, Default, _
strResult, Len(strResult), _
Filename)
GetIni = Left$(strResult, InStr(strResult, Chr$(0)) - 1)
End Function
Public Sub PutIni(ApName As String, KeyName As String, _
Param As String, Filename As String)
'INIファイルに新たなキーの値を書込む
' ※既存のキーがあれば更新・なければ新規作成する
'ApName : セクション名
'KeyName : 項目名
'Param : 更新する値
'FileName : 書出ファイル名
'****************************************
Call WritePrivateProfileString(ApName, KeyName, _
Param, Filename)
End Sub
Private Sub Command1_Click()
PutIni "TEST", "Item", "テスト", "C:\test.ini"
End Sub
Private Sub Command2_Click()
Dim strVar As String
strVar = GetIni("TEST", "Item", "", "C:\test.ini")
MsgBox ("test.iniの内容=" & strVar)
End Sub
VB.NET
Declare Function WritePrivateProfileString _
Lib "KERNEL32.DLL" Alias "WritePrivateProfileStringA" ( _
ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpString As String, _
ByVal lpFileName As String) As Integer
Declare Function GetPrivateProfileString _
Lib "KERNEL32.DLL" Alias "GetPrivateProfileStringA" ( _
ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Integer, _
ByVal lpFileName As String) As Integer
Public Function GetIni(ByVal ApName As String, _
ByVal KeyName As String, _
ByVal Defaults As String, _
ByVal Filename As String _
) As String
'INIファイルから参照したいキーの値を取得する
'ApName : セクション名
'KeyName : 項目名
'Default : 項目が存在しない場合の初期値
'FileName : 参照ファイル名
'****************************************
Dim strResult As String = Space(255)
Call GetPrivateProfileString(ApName, KeyName, Defaults, _
strResult, Len(strResult), _
Filename)
GetIni = Microsoft.VisualBasic.Left(strResult, _
InStr(strResult, Chr(0)) - 1)
End Function
Public Sub PutIni(ByVal ApName As String, _
ByVal KeyName As String, _
ByVal Param As String, _
ByVal Filename As String)
'INIファイルに新たなキーの値を書込む
' ※既存のキーがあれば更新・なければ新規作成する
'ApName : セクション名
'KeyName : 項目名
'Param : 更新する値
'FileName : 書出ファイル名
'****************************************
Call WritePrivateProfileString(ApName, KeyName, _
Param, Filename)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
PutIni("TEST", "Item", "テスト2", "C:\test.ini")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Dim strVar As String
strVar = GetIni("TEST", "Item", "", "C:\test.ini")
MsgBox("test.iniの内容=" & strVar)
End Sub
VB.NETのWin32APIの使い方はVB6とほとんど同じように使えるが、別の宣言の仕方もある。
MicrosoftのVBマイグレーションTipsにはその方法が記載されている。
大変わかりやすく勉強になりました。
動作テストにてここのソース(VB.NET)をそのままコピペして使用してみたところ、普通に使えたためにそのまま利用させていただきたいのですがよろしいでしょうか?
上記のメールアドレスにお返事いただけると幸いです。
GetIni("TEST", "Item", "", "App.Path & "¥test.ini")
ではエラーが出ますのでご教授お願いします。
普通にHTMLと同じ相対パスの書き方で良かったのですね^^;
お騒がせしてすみません。