Desktop Functions: Smart Device Functions:
|
GetPrivateProfileString (kernel32)
C# Signature:
[DllImport("kernel32.dll", CharSet=CharSet.Unicode)] and/or
[DllImport("kernel32.dll", CharSet=CharSet.Unicode)] VB.NET Signature:
<DllImport("kernel32.dll", SetLastError:=True)> _ C++ Signature:
[DllImport("KERNEL32.DLL", CharSet=CharSet::Auto, EntryPoint="GetPrivateProfileString")] User-Defined Types:None. Notes:To avoid casting of the StringBuilder.Capacity to uint you can also declare the nSize parameter as int. If you need to get all the section names by passing a null lpAppName or all the key names by passing a null lpKeyName, then you'll need to use a technique like is shown for GetPrivateProfileSection to handle the double null-terminated result. .NET's marshaler will truncate the StringBuilder at the first null it finds, so to get back the full double null-terminated result string, you have to manage your own memory buffer. An alternative to the technique above is to use a char[] in place of a StringBuilder when you need to obtain all key names or all section names. The char[] will not truncate at the first null it finds. Tips & Tricks:If passing a char[] for the purposes of getting a null-tokenized list of section or key names, you can afterward pass this char[] to the constructor of a new String, and use the String's Split('\0') to easily obtain a list of your section or key names. There's a simple way to determine with this function if the provided key exists or not. F.e. if you define lpDefault as empty String ("" or vbNullString or Nothing) you'll not know if the returned value is actually the sign for a missing key or just the read value. If you pass f.e. vbNullChar along, you'll receive an empty String if the value is an empty String, and a vbNullChar if the key is missing (both read 0 characters). Sample Code:
using System; VB.NET Sample
Imports System.Runtime.InteropServices Alternative Managed API:Do you know one? Please contribute it! The above C# sample code does not work to retrieve section names or key names. The issue is you have to pass 0 rather than null for the unspecified parameters. Here is a good managed API: http://www.codeproject.com/KB/files/INI_File_Enumerator.aspx Please edit this page!Do you have...
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more). |
|