Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _ Any, source As Any, ByVal bytes As Long)Private Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As _ LongPrivate Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As _ Long' retrieve a string at a given address' if LENGTH < 0 the string is considered to be null-terminated' and the function determines its lengthFunction StringFromAddr(ByVal address As Long, ByVal length As Long, _ Optional ByVal isUnicode As Boolean) As String ' determine the length, if necessary If length < 0 Then If isUnicode Then length = lstrlenW(address) Else length = lstrlenA(address) End If End If ' copy the characters StringFromAddr = Space$(length) If isUnicode Then CopyMemory ByVal StrPtr(StringFromAddr), ByVal address, length * 2 Else CopyMemory ByVal StringFromAddr, ByVal address, length End IfEnd Function