I created a C# class Ini which exposes 2 functions from KERNEL32.dll. These functions are: WritePrivateProfileString and GetPrivateProfileString
Namespaces you will need: System.Runtime.InteropServices and System.Text
The Class
Collapse
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace Ini
{
///<summary> /// Create a New INI file to store or load data ///</summary> publicclass IniFile
{
publicstring path;
[DllImport("kernel32")]
privatestaticexternlong WritePrivateProfileString(string section,
string key,string val,string filePath);
[DllImport("kernel32")]
privatestaticexternint GetPrivateProfileString(string section,
string key,string def, StringBuilder retVal,
int size,string filePath);
///<summary> /// INIFile Constructor. ///</summary> ///<PARAMname="INIPath"></PARAM> public IniFile(string INIPath)
{
path = INIPath;
}
///<summary> /// Write Data to the INI File ///</summary> ///<PARAMname="Section"></PARAM> /// Section name ///<PARAMname="Key"></PARAM> /// Key Name ///<PARAMname="Value"></PARAM> /// Value Name publicvoid IniWriteValue(string Section,string Key,string Value)
{
WritePrivateProfileString(Section,Key,Value,this.path);
}
///<summary> /// Read Data Value From the Ini File ///</summary> ///<PARAMname="Section"></PARAM> ///<PARAMname="Key"></PARAM> ///<PARAMname="Path"></PARAM> ///<returns></returns> publicstring IniReadValue(string Section,string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section,Key,"",temp,
255, this.path);
return temp.ToString();
}
}
}
Using the class
Steps to use the Ini class:
In your project namespace definition add
Collapse
using INI;
Create a INIFile like this
Collapse
INIFile ini = new INIFile("C:\\test.ini");
Use IniWriteValue to write a new value to a specific key in a section or use IniReadValue to read a value FROM a key in a specific Section.
That's all. It's very easy in C# to include API functions in your class(es).
License
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here