Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
Any, source As Any, ByVal bytes As Long) ' convert a BSTR into a VB String Function StringFromBSTR(ByVal pointer As Long) As Long Dim temp As String ' copy the pointer into the temporary string's BSTR CopyMemory ByVal VarPtr(temp), pointer, 4 ' now Temp points to the original string, so we can copy it StringFromBSTR = temp ' manually clear then temporary string to avoid GPFs CopyMemory ByVal VarPtr(temp), 0&, 4 End Function |