My modem's fixed now, sorry I've been offline for a couple of days and this thread got quite interesting

sorry about the Function/Sub thing, just about every other API is a function so it threw me and I didn't have VB working at the time

I had a play and remembered that I have no Idea what WinAmp is so I havn't tested it from there, If I make a byte array with the correct ascII codes in it and declare my function like this

Code:
Private Declare Sub StringFromPointer Lib "kernel32" Alias "RtlMoveMemory (ByVal Dest as String, ByVal Pointer as Long, ByVal Length as Long)
then just put the pointer to the byte array into Pointer and the string into Dest, it works without the StrConv function. This could be why you're getting jibberish. It's a problem with windows moving to unicode wheras VB's already in unicode so strings havve to be converted and it's anyones guess what format the strings come in (or look at the C++ declaration, I'm guessing it's an LPWSTR or an LPSTR.