@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: Retrieves the names of all sections in an initialization file. Note: This function is provided only for compatibility with 16-bit Windows-based applications. Applications should store initialization information in the registry. !!!!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: 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 ' ' I can't believe people write shit code like this. ' 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 C# Signature: [DllImport("kernel32.dll",CharSet=CharSet.Auto)] static extern uint GetPrivateProfileSectionNames(IntPtr lpszReturnBuffer, uint nSize, string lpFileName); !!!!Alternative Sample Code: //similar to above, but use of CharSet in DllImport allows use of Marshal.PtrToStringAuto public string[] SectionNames() { uint MAX_BUFFER = 32767; IntPtr pReturnedString = Marshal.AllocCoTaskMem((int)MAX_BUFFER); uint bytesReturned = GetPrivateProfileSectionNames(pReturnedString, MAX_BUFFER, m_iniFile); if (bytesReturned == 0) return null; string ret = Marshal.PtrToStringAnsi(pReturnedString, (int)(bytesReturned * 2)); Marshal.FreeCoTaskMem(pReturnedString); // convert ASCII string to Unicode string byte[] bytes = Encoding.ASCII.GetBytes(ret); string local = Encoding.Unicode.GetString(bytes); //use of Substring below removes terminating null for split return local.Substring(0, local.Length - 1).Split('\0'); } !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: GetPrivateProfileSectionNames@msdn on MSDN
Edit kernel32.getpriva...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.