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
|