Passing strings between a vc6 dll and vb6 exe
I have a win32 dll (VC6) and a VB6 exe. The dll gets loaded (and a
specified single parameter function is called) by a 3rd party app -
when an event of interest occurs. The 3rd party app uses the __cdecl
calling convention and passes a single LPSTR argument to the dll
funtion. I now want to add some code in that dll fn to pass the string
to the VB exe.
I haven't done much win32 programming recently and more importantly
haven't touched VB in nearly a decade so looking for some advice on
how to proceed.
After a bit of googling, I decided to use FindWindow() and
SendMessage() on the VC dll side, and subclassing the WindowProc on
the VB side to receive the message.
This seems to be working as the VB exe receives the message, but it
doesn't receive the string being passed or to be more specific it
recieves a pointer to some garbage.
This is what the code looks like
VC6 DLL :-
long foo(LPSTR id){
FindWindow(NULL,"VBApp")
char cTemp[50];
strcpy_s(cTemp,cid);
h = FindWindow(NULL, "Parse");
SendMessage(h, WM_USER + 234, NULL, (LPARAM) &cTemp);
}
VB exe :-
WindowProc(...)
If (uMsg = WM_USER + 234) Then
sLen = lstrlen(lParam)
sString = Space$(sLen)
CopyMemory ByVal sString, ByVal lParam, sLen
DebugPrint ("Received: " & sString) << ====== Prints garbage
DoSomething(sString)
End If
CopyMemory is kernel32 RtlMoveMemory
Any advice is greatly appreciated,
Thanks