[DllImport("kernel32.dll")]
static extern uint GetPrivateProfileString(
string lpAppName,
string lpKeyName,
string lpDefault,
StringBuilder lpReturnedString,
uint nSize,
string lpFileName);
<DllImport("kernel32.dll", SetLastError:=True)> _
Private Shared Function GetPrivateProfileString(ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As StringBuilder, _
ByVal nSize As Integer, _
ByVal lpFileName As String) As Integer
End Function
None.
To avoid casting of the StringBuilder.Capacity to uint you can also declare the nSize parameter as int.
Please add some!
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace GPPS
{
class Class1
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder(500);
uint res = GetPrivateProfileString("AppName", "KeyName", "", sb, sb.Capacity, @"c:\test.ini");
Console.WriteLine(sb.ToString());
}
[DllImport("kernel32.dll")]
static extern uint GetPrivateProfileString(
string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
}
}
VB.NET Sample
Imports System.Runtime.InteropServices
Imports System.TextModule
Module1
Private Declare Auto Function GetPrivateProfileString Lib "kernel32" (ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As StringBuilder, _
ByVal nSize As Integer, _
ByVal lpFileName As String) As Integer
Sub Main()
Dim res As Integer
Dim sb As StringBuilder
sb = New StringBuilder(500)
res = GetPrivateProfileString("AppName", "KeyName", "", sb, sb.Capacity, "c:\test.ini")
Console.WriteLine("GetPrivateProfileStirng returned : " + res.ToString())
Console.WriteLine("KeyName is : " + sb.ToString())
End Sub
End Module
Do you know one? Please contribute it!