using System; using System.IO; using System.Runtime.InteropServices; using System.Text; namespace IPA.Config { /// /// Create a New INI file to store or load data /// [Obsolete("Jesus, this uses old 16-bit system calls!")] internal class IniFile { [DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileStringW", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] private static extern int GetPrivateProfileString( string lpSection, string lpKey, string lpDefault, StringBuilder lpReturnString, int nSize, string lpFileName); [DllImport("KERNEL32.DLL", EntryPoint = "WritePrivateProfileStringW", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] private static extern int WritePrivateProfileString( string lpSection, string lpKey, string lpValue, string lpFileName); /*private string _path = ""; public string Path { get { return _path; } set { if (!File.Exists(value)) File.WriteAllText(value, "", Encoding.Unicode); _path = value; } }*/ private FileInfo _iniFileInfo; public FileInfo IniFileInfo { get => _iniFileInfo; set { _iniFileInfo = value; if (_iniFileInfo.Exists) return; _iniFileInfo.Directory?.Create(); _iniFileInfo.Create(); } } /// /// INIFile Constructor. /// /// public IniFile(string iniPath) { IniFileInfo = new FileInfo(iniPath); //this.Path = INIPath; } /// /// Write Data to the INI File /// /// /// Section name /// /// Key Name /// /// Value Name public void IniWriteValue(string section, string key, string value) { WritePrivateProfileString(section, key, value, IniFileInfo.FullName); } /// /// Read Data Value From the Ini File /// /// /// /// public string IniReadValue(string section, string key) { const int maxChars = 1023; StringBuilder result = new StringBuilder(maxChars); GetPrivateProfileString(section, key, "", result, maxChars, IniFileInfo.FullName); return result.ToString(); } } }