HMI.Util/IniFileHelper.cs
@@ -26,6 +26,9 @@
        private static extern uint GetPrivateProfileStringA(string section, string key,
            string def, Byte[] retVal, int size, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileSection(string section, byte[] retVal, int size, string filePath);
        #endregion
        public static List<string> ReadSections()
        {
@@ -86,7 +89,7 @@
                return temp.ToString();
            }
            else
                return String.Empty;
                return NoText;
        }
        #endregion
@@ -108,5 +111,34 @@
                return true;
        }
        #endregion
        public static Dictionary<string, string> GetKeyValuesBySection(string iniFile, string section)
        {
            int size = 65536;
            byte[] buffer = new byte[size];
            Dictionary<string, string> result = new Dictionary<string, string>();
            int bytesRead = GetPrivateProfileSection(section, buffer, size, iniFile);
            if (bytesRead > 0)
            {
                string sectionData = Encoding.Default.GetString(buffer, 0, bytesRead - 1);
                string[] keyValuePairs = sectionData.Split('\0');
                foreach (string pair in keyValuePairs)
                {
                    if (!string.IsNullOrEmpty(pair))
                    {
                        int equalSignIndex = pair.IndexOf('=');
                        if (equalSignIndex > 0)
                        {
                            string key = pair.Substring(0, equalSignIndex).Trim();
                            string value = pair.Substring(equalSignIndex + 1).Trim();
                            result[key] = value;
                        }
                    }
                }
            }
            return result;
        }
    }
}