Dmitry Timoshkov [mailto:dmitry@baikal.ru] wrote:
"ilmcuts" ilmcuts@gmx.net wrote:
Check a Win9x version of shell32.dll; also check
shdocvw.dll (ordinal 118)
and shdocvw401.dll. One of them exports the function by name on some Win9x version. The correct name is "ShellDDEInit". I'm not sure where the true implementation is located, but using ordinal 118 from shdocvw.dll works beautifully on every windows version which has that DLL. I suspect however that it is only a redirect to the true implementation which may be inside shell32.dll or somewhere else. *shrug*
After looking again at the shell32 from win2k SP4 I've found that it really has the strings used by the progman DDE interface. The reason why I didn't find the first time is that strings are spread over the code section. So, yes, it seems that at least the progman DDE interface handler is residing in shell32. Now the question is: how we should implement it? Just add a necessary atom "progman" and create a hidden window on dll load event, or wait for some apparently undocumented API call and initialize only then?
Well, I suspect that the first Explorer instance implementing the desktop is probably expected to call that API as well as several others. Ordinal 200 (its current name SHLocalAlloc() is a little bit misleading here) for instance registers a Progman window class and creates a Program Manager window which presumably serves as desktop. It also establishes a link to OLE32 by loading it for later weak linking to its functionality and initializes it by calling OleInitialize()
Ordinal 188 as explained earlier registers a GlobalAtom "PROGMAN" as well as registering DDE services for "Progman", "Shell", and "Folders".
P.S. Rolf, my apologies for not looking carefully enough first time around.
No offense taken. I just wondered if I had gotten a special W2K build somehow ;-)
Rolf Kalbermatter