我的代码如下所示。
[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);
感谢所有帮助过的人。