GetPrivateProfileSectionNames (kernel32)
Last changed: -218.83.157.202

.
Summary

VB.Net Signature

<DllImport("kernel32.dll")> _
    Shared Function GetPrivateProfileSectionNames( _
    ByVal lpszReturnBuffer As IntPtr, ByVal nSize As System.Int32, ByVal lpFileName As String) As System.Int32
    End Function

C# Signature:

[DllImport("kernel32.dll")]
static extern uint GetPrivateProfileSectionNames(IntPtr lpszReturnBuffer,
   uint nSize, string lpFileName);

Sample Code:

C#
--
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

// Create a foo ini file.
     string filepath = @"C:\foo.ini";
     string[] fooStrings = {
         "[Submitter]",
         "Name = Ti Brown",
         "Email = bleek@ti55.net",
         "[Comments]",
         "Remark1 = I love C#",
         "Remark2 = I hate sharp seeds"
     };
    foreach (string s in fooStrings)
        {
                File.AppendAllText(filepath, s + Environment.NewLine, Encoding.UTF8);
        }

//Get section names.
    const char csNullChar = '\0';
     byte[] str = new byte[1024];
     uint uiReturn = GetPrivateProfileSectionNames(str, str.Length, filepath);
     s = System.Text.Encoding.Default.GetString(str);

VB.NET

    Dim profiles As New Collections.Specialized.StringCollection
    Dim ptr As IntPtr = Marshal.StringToHGlobalAnsi(New String(vbNullChar, 1024))
    Dim len As Int32 = GetPrivateProfileSectionNames(ptr, 1024, IniPath)
    Dim buff As String = Marshal.PtrToStringAnsi(ptr, len)
    Marshal.FreeHGlobal(ptr)
    Dim sb As New StringBuilder
    For ii As Integer = 0 To len - 1
        Dim c As Char = buff.Chars(ii)
        If c = vbNullChar Then
        profiles.Add(sb.ToString)
        sb.Length = 0
        Else
        sb.Append(c)
        End If
    Next

Alternative Managed API:

Do you know one? Please contribute it!

Documentation