スポンサーリンク
初めに
本記事では、kernel32.dllを使用して、以下について解説します。
- INIファイルの読み込み
- INIファイルの書き込み
※解説時に使用するプログラムは、INIファイルの読み書き処理のプログラムをシンプルにするため、必要最低限のコーディングをしています。
そのため、INIファイルの読み書き以外の要素はすべて取り除いています。
INIファイルを作成
メモ帳などで、テキストファイルを作成して、拡張子を「ini」に変更します。
変更後、以下の内容をコピーして保存します。
[SECTION_1]
KEY_1=abcde
KEY_2=12345
[SECTION_2]
KEY_1=a
KEY_2=b
INIファイルの読み込み方法
以下のプログラムは、フォーム画面で、ボタン押下時に、INIファイルのSECTION_1のKEY_1の値を取得して、メッセージダイアログに「abcde」を表示するプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <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 StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim sb1_1 As StringBuilder = New StringBuilder(300) Dim iniFileName = "D:\Setting.ini" GetPrivateProfileString("SECTION_1", "KEY_1", "エラー", sb1_1, 15, iniFileName) MsgBox(sb1_1.ToString ) End Sub |
実行結果(メッセージダイアログ)
abcde
INIファイルの書き込み方法
以下のプログラムは、フォーム画面で、ボタン押下時に、INIファイルのSECTION_2のKEY_1の値に「Hello world」と書き込むプログラムになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> Public Shared Function WritePrivateProfileString( ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As StringBuilder) As Integer End Function Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim iniFileName As New StringBuilder(300) iniFileName.Append("D:\Setting.ini") WritePrivateProfileString("SECTION_2", "KEY_1", "Hello world", iniFileName) End Sub |
実行結果(Setting.ini)
[SECTION_1]
KEY_1=abcde
KEY_2=12345
[SECTION_2]
KEY_1=Hello world
KEY_2=b
DeclareでINIファイルの読み書きする方法
上記では、DllImportを使用して「KERNEL32.DLL」を定義していましたが、Declareを使用した場合は、以下のように記述します。
処理の結果としては、DllImportを使用した上記のプログラムと同じ結果になります。
ただ、C#ではDeclareがないため上記の方をお勧めします。
Declareで読み込み
1 2 3 4 5 6 7 8 | Private Declare Function GetPrivateProfileString Lib "kernel32" _ Alias "GetPrivateProfileStringA" ( ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer |
Declareで書き込み
1 2 3 4 5 | Private Declare Function WritePrivateProfileString2 Lib "kernel32" _ Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As StringBuilder) As Integer |
ABOUT ME
スポンサーリンク