API Aufruf und Typumwandlung nach managed String

19/09/2007 - 13:36 von Peter Lübke | Report spam
Hallo zusammen

Ich habe ein Problem mit einem API Aufruf. Die API-Funktion
soll einen String zurückliefern, da steht aber nichts sinnvolles drin.

Hier die API-Deklaration:

<DllImport("RAPI.DLL", CharSet:=CharSet.Unicode)> _
Public Function CeGetSpecialFolderPath _
(ByVal nFolder As Integer, ByVal nBufferLength As Integer, _
ByRef lpBuffer As IntPtr) _
As Integer
End Function

Hier der Aufruf und der Versuch, den String umzuwandeln:

Dim ptr As IntPtr = IntPtr.Zero
Dim c As Integer
Dim str As String

c = CeGetSpecialFolderPath(0, 256, ptr)
str = CType(Marshal.PtrToStringAuto(ptr), String)

ich habe sàmtliche PtrToString-Varianten durchprobiert
aber ich bekomme immer nur unsinnige Zeichen.
Lt. Rückgabewert c liefert die Funktion 13 Zeichen.
Kann mir jemand sagen, was ich falsch mache ?

Gruß
Peter
 

Lesen sie die antworten

#1 Thomas Scheidegger [MVP]
19/09/2007 - 13:42 | Warnen spam
Hallo Peter


Die API-Funktion soll einen String zurückliefern
Public Function CeGetSpecialFolderPath _



typ. mit StringBuilder, entsprechend der Desktop-Variante:
http://pinvoke.net/default.aspx/she...FolderPath




Thomas Scheidegger - MVP .NET - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/

Ähnliche fragen