C#Ini收到所有章节

时间:2017-08-10 19:40:26

标签: c# dll kernel32

我的代码如下所示。

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);

[DllImport("kernel32")]
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filepath);

[DllImport("kernel32")]
private static extern int GetPrivateProfileSection(string lpAppName, byte[] lpszReturnBuffer, int nSize, string lpFileName);

public string iniReadValue(string section, string key)
{
  StringBuilder temp = new StringBuilder(255);
  GetPrivateProfileString(section, key, "", temp, 255, this.path);
  return temp.ToString();
}

现在我的问题: 我有一个包含不同部分的IniFile,每个部分有多个键。为了找到所有部分的特定键的最高值,我需要检索所有部分名称,以便访问键和键的值。

我尝试使用:

GetPrivateProfileString(null, key, "", temp, 255, this.path);

以及

ini.iniReadValue(null, key);

他们两个只给我第一部分而他们不接触其余部分。

是否有可能将所有的Sectionnames更好地放入List?

感谢您的评论,找到了解决此问题的方法: 我会在这里发布,供人们查找:

        public ComboBox SectionNames()
        {
            ComboBox cboConfiguration = new ComboBox();
            byte[] buffer = new byte[1024];
            GetPrivateProfileSectionNames(buffer, buffer.Length, this.path);
            string allSections = System.Text.Encoding.Default.GetString(buffer);
            string[] sectionNames = allSections.Split('\0');
            foreach (string sectionName in sectionNames)
            {
                if (sectionName != string.Empty)
                cboConfiguration.Items.Add(sectionName);
            }
            // Returns All names as Items in Combobox
            return cboConfiguration;
        }

ofc with

[DllImport("kernel32")]
            static extern int GetPrivateProfileSectionNames(byte[] lpszReturnBuffer, int nSize, string lpFileName);

感谢所有帮助过的人。

0 个答案:

没有答案