using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace ShenTun.Camera.Common { public class IniConfigHelper { private const int VALUE_MAX_LEN = 1024; //值最大长度 /// /// 写配置到ini文件 /// /// 节点名 /// 要写入的key /// 要写入的值 /// 要写入ini配置文件路径 /// 成功返回非0,失败返回0 [DllImport("kernel32")] private static extern long WritePrivateProfileString(string appName, string keyName, string value, string fileName); /// /// 从ini配置文件读配置 /// /// 节点名 /// 目标key /// 如果找不到目标key就返回这个默认值 /// 返回目标key对应的值 /// returnedString的大小 /// 要读取的ini配置文件路径 /// 返回返回字符串的长度 [DllImport("kernel32")] private static extern long GetPrivateProfileString(string appName, string keyName, string defaultValue, StringBuilder returnedString, int size, string fileName); /// /// 外部接口,写配置 /// /// ini配置文件路径 /// 节点名 /// key /// 值 /// 成功返回true,失败返回false public static bool WriteSetting(string iniFilePath, string appName, string keyName, string value) { return (0 == WritePrivateProfileString(appName, keyName, value, iniFilePath)? false :true); } /// /// 读配置 /// /// ini配置文件路径 /// 节点名 /// 目标key /// 默认值 /// 返回key对应的value public static string ReadSetting(string iniFilePath, string appName, string keyName, string defaultValue) { StringBuilder result = new StringBuilder(VALUE_MAX_LEN+1); GetPrivateProfileString(appName, keyName, defaultValue, result, VALUE_MAX_LEN, iniFilePath); return result.ToString(); } } }