1.INI ファイルから読み込み
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'INI ファイルから読み込み
'戻り値(文字列)を受け取るバッファを準備
Dim strBuffer As New System.Text.StringBuilder
strBuffer.Capacity = 256 'バッファのサイズを指定
Dim ret As Integer
'INIファイルよりキーの値を読み込み(整数値を取得する場合)
myLeft = GetPrivateProfileInt("Form1Point", "Xpos", 0, iniFileName)
myTop = GetPrivateProfileInt("Form1Point", "Ypos", 0, iniFileName)
myWidth = GetPrivateProfileInt("Form1Size", "Width", 0, iniFileName)
myHeight = GetPrivateProfileInt("Form1Size", "Height", 0, iniFileName)
'文字列の値を取得する場合
ret = GetPrivateProfileString("Form1Text", "Text", "", _
strBuffer, strBuffer.Capacity, iniFileName)
myTxt = strBuffer.ToString
'結果を表示
Debug.WriteLine(myLeft) '110
Debug.WriteLine(myTop) '145
Debug.WriteLine(myWidth) '334
Debug.WriteLine(myHeight) '135
Debug.WriteLine(myTxt) 'INIファイルの読み込み・書き込み(75)
End Sub
2.INI ファイルに各キーに対する値を取得して書き込み
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
'INI ファイルに各キーに対する値を取得して書き込み
Dim ret As Integer
'書き込みは文字列も整数値(文字列に変換して)も同じ方法で
ret = WritePrivateProfileString("Form1Text", "Text", Me.Text.ToString, iniFileName)
ret = WritePrivateProfileString("Form1Point", "Xpos", CStr(Me.Location.X), iniFileName)
ret = WritePrivateProfileString("Form1Point", "Ypos", CStr(Me.Location.Y), iniFileName)
ret = WritePrivateProfileString("Form1Size", "Width", CStr(Me.Width), iniFileName)
ret = WritePrivateProfileString("Form1Size", "Height", CStr(Me.Height), iniFileName)
'書き込んだ結果をメモ帳で見ると下記のようになっています。
' [Form1Text]
' Text = INIファイルの読み込み・書き込み(75)
' [Form1Point]
' Xpos = 110
' Ypos = 145
' [Form1Size]
' Width = 334
' Height = 135
End Sub
読み書き、共通分(APIの宣言及び変数の宣言)
Imports System.Runtime.InteropServices
Public Class Form1
Inherits System.Windows.Forms.Form
<DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _
Public Shared Function GetPrivateProfileString( _
ByVal lpAppName As String , _
ByVal lpKeyName As String , _
ByVal lpDefault As String , _
ByVal lpReturnedString As System.Text.StringBuilder, _
ByVal nSize As Integer , _
ByVal lpFileName As String ) As Integer
End Function
'指定のINIファイルの指定のキーの文字列を変更する(P994)
<DllImport("KERNEL32.DLL")> _
Public Shared Function WritePrivateProfileString( _
ByVal lpAppName As String , _
ByVal lpKeyName As String , _
ByVal lpString As String , _
ByVal lpFileName As String ) As Integer
End Function
'指定のINIファイルから整数値を取得する(P986)
<DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _
Public Shared Function GetPrivateProfileInt( _
ByVal lpAppName As String , _
ByVal lpKeyName As String , _
ByVal nDefault As Integer , _
ByVal lpFileName As String ) As Integer
End Function
Private myLeft, myTop, myWidth, myHeight As Integer, myTxt As String
Private iniFileName As String
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
iniFileName = "Test.ini" 'INIファイル名(直接フルパスを指定してもOK)
'INI ファイルをプログラムと同じフォルダに置く場合
'ルートディレクトリーかの判断
Dim MyPath As String = Application.StartupPath
If MyPath.EndsWith("\") = False Then
MyPath &= "\"
End If
iniFileName = MyPath & iniFileName
End Sub