header
CodePanic! > C#.NET Tips > 今ここ

■iniファイルの値を取得する

iniファイルはテキストファイルなので
直接iniファイルを開いて自力で解析する方法もありますが
Win32APIの GetPrivateProfileString関数 をC#から呼び出す例です。

GetPrivateProfileString関数はKERNEL32.DLLの中にその実態があるので
DLLをインポートする宣言を行っています。

このコードを動かす場合は
実行ファイルが置かれているフォルダにhogehoge.iniファイルを作成し

[SECTION]
KEY=hogehoge

のような2行を記述して保存しておいてください。
Formに配置されたButtonを押すと内容が表示されます。

iniファイルは簡単な構成で
[]でセクション名を囲み、次のセクション名まで
キー名=値
が続きます。改行区切りです。

例:
[section_1]
data=hogehoge
length=128

[section_2]
data=hogehoge
length=128

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;   // これが必要

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        // Win32APIの GetPrivateProfileString を使う宣言
        [DllImport("KERNEL32.DLL")]
        public static extern uint
          GetPrivateProfileString(string lpAppName,
          string lpKeyName, string lpDefault,
          StringBuilder lpReturnedString, uint nSize,
          string lpFileName);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // iniファイル名を決める(実行ファイルが置かれたフォルダと同じ場所)
            string iniFileName = AppDomain.CurrentDomain.BaseDirectory + "hogehoge.ini";

            // iniファイルから文字列を取得
            StringBuilder sb = new StringBuilder(1024);
            GetPrivateProfileString(
                "SECTION",      // セクション名
                "KEY",          // キー名    
                "ありません",   // 値が取得できなかった場合に返される初期値
                sb,             // 格納先
                Convert.ToUInt32(sb.Capacity), // 格納先のキャパ
                iniFileName);   // iniファイル名

            MessageBox.Show(sb.ToString());
        }
    }
}





Copyright © 2008.07 - shougo suzaki