Re: CInternetSession in DLL - afxinet.h vs windows.h problems
"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message
news:9elcl4h90sfdainralicao2s80rrn58afc@4ax.com...
Typically, you have a shared memory segment, with at least an HWND in it,
and you
PostMessage to the window specified by the HWND, and let the handler deal
with it.
You can download my hook example from my MVP Tips site.
A shared memory segment may not be appropriate as: 1) it is fixed size, 2)
it is shared by all instances of the DLL, so it is not easily possible for
each DLL instance to simultaneously use it to pass data back to the .exe.
For something like a file, the DLL can either specify the full path to the
file and can request the .exe to send that filename. Or if the contents are
small, it may make sense to send the contents themselves to the .exe instead
of the filename (which saves having to maintain the external file on disk).
Either way, there are several IPC ("interprocess communication") ways to
communicate strings (e.g. the file path or the file contents) from the dll
to the .exe. The WM_COPYDATA message is my favorite. Another is the mail
slot. Both of these can allow the .exe to receive a queue of requests so it
can process the Internet requests from the DLL instances in order of
receipt. The shared data segment which Joe mentions, and also and memory
mapped files do allow you to share the data, but doesn't make it easy to
separate the data from the different instances of the DLL.
-- David