110,534
社区成员
发帖
与我相关
我的任务
分享
#region 调用windowsAPI
//用来读取INI 文件的内容
[DllImport("Kernel32.dll")]
private static extern int GetPrivateProfileString(string strAppName, string strKeyName, string strDefault, StringBuilder sbReturnString, int nSize, string strFileName);
//获取ini文件所有的section
[DllImport("Kernel32.dll")]
private extern static int GetPrivateProfileSectionNamesA(byte[] buffer, int iLen, string fileName);
//根据传入参数的不同进行写入或修改或删除操作(返回值 Long,非零表示成功,零表示失败)
[DllImport("Kernel32.dll")]
public static extern long WritePrivateProfileString(string strAppName, string strKeyName, string strKeyValue, string strFileName);
/// <summary>
/// 返回该配置文件中所有Section名称的集合
/// </summary>
/// <returns></returns>
public List<string> ReadSections(string file)
{
byte[] buffer = new byte[65535];
int rel = GetPrivateProfileSectionNamesA(buffer, buffer.GetUpperBound(0), file);
int iCnt, iPos;
List<string> arrayList = new List<string>();
string tmp;
if (rel > 0)
{
iCnt = 0; iPos = 0;
for (iCnt = 0; iCnt < rel; iCnt++)
{
if (buffer[iCnt] == 0x00)
{
tmp = System.Text.ASCIIEncoding.Default.GetString(buffer, iPos, iCnt - iPos).Trim();
iPos = iCnt + 1;
if (tmp != "")
arrayList.Add(tmp);
}
}
}
return arrayList;
}
/// <summary>
/// 读取指定节点下的指定key的value返回string
/// </summary>
/// <param name="section"></param>
/// <param name="key"></param>
/// <returns></returns>
public string ReadIniKey(string section, string key, string file)
{
if (section.Trim().Length <= 0 || key.Trim().Length <= 0) return string.Empty;
StringBuilder strTemp = new StringBuilder(256);
GetPrivateProfileString(section, key, string.Empty, strTemp, 256, file);
return strTemp.ToString().Trim();
}
/// <summary>
/// 往指定section的key中写入value
/// </summary>
/// <param name="section"></param>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool WriteIniKey(string section, string key, string value, string file)
{
bool flag;
try
{
if (section.Trim().Length <= 0 || key.Trim().Length <= 0 || value.Trim().Length <= 0)
{
flag = false;
}
else
{
if (WritePrivateProfileString(section, key, value, file) == 0)
{
flag = false;
}
else
{
flag = true;
}
}
}
catch
{
flag = false;
}
return flag;
}
public string iniFile = @"D:\Studio\Visual Studio 2010\Projects\Test\WinFormTest\bin\Debug\test.ini";
#endregion
private void Form1_Load(object sender, EventArgs e)
{
LoadINI();
}
private void LoadINI()
{
List<string> iniList = ReadSections(iniFile);
listView1.Items.Clear();
ListViewItem lvItem;
foreach (string item in iniList)
{
string wpmc = ReadIniKey(item, "WPMC", iniFile);
string clfs = ReadIniKey(item, "CLFS", iniFile);
lvItem = new ListViewItem(wpmc);
lvItem.SubItems.Add(clfs);
lvItem.Tag = item + "," + clfs;
listView1.Items.Add(lvItem);
}
}
private void listView1_DoubleClick(object sender, EventArgs e)
{
string item = listView1.SelectedItems[0].Tag.ToString().Split(',')[0];
string clfs = listView1.SelectedItems[0].Tag.ToString().Split(',')[1];
WriteIniKey(item, "CLFS", clfs == "销毁" ? "不销毁" : "销毁", iniFile);
LoadINI();
}