Stub DDE interface for Progman.exe

Jeremiah Flerchinger jeremiah.flerchinger at gmail.com
Fri Feb 6 17:26:50 CST 2009


On Fri, 2009-02-06 at 10:41 +0000, Rob Shearman wrote:
> 2009/2/5 Jeremiah Flerchinger <jeremiah.flerchinger at gmail.com>:
> > On Thu, 2009-02-05 at 18:12 +0000, Rob Shearman wrote:
> > Is explorer always running in Wine? I know "wine explorer" does not run
> > ShellDDEInit when it starts. I thought most people were against
> > additional processes, but I want to see the Progman DDE interface
> > working for the different ways of calling it.
> 
> Try running a simple winelib app with WINEDEBUG=+process set and see
> for yourself.

OK, an explorer process is always running, but it does not run
ShellDDEInit when it starts & it probably should.

> > ShellDDEInit didn't exist before Win 2000 and was in Shdocw.dll and not
> > shell32.dll. Do we want to call ShellDDEInit in shell32 when Wine starts
> > (and ends) then?
> 
> I'm not sure if there is a desire to allow native shell32 to be used
> in Wine. However, if there is it would be simple to use GetProcAddress
> with appropriate checks on the shell32 module that has been loaded.

I don't know if there is any desire for a native shell32 either. 
I think I agree with Dmitry that the built-in explorer should call ShellDDEInit. 
As it stands, for the built-in explorer, it is never called and the respective DDE interfaces are never registered.

> > It is supposed to be called only by the process that is
> > acting as the shell when it registers itself as a DDE host for the
> > shell. I don't think anything else would ever call it then.
> 
> I can't work out what you mean by this. Perhaps you can rephrase it or
> describe in more detail what you mean.
ShellDDEInit is supposed to be called by the process that is acting as the shell (progman.exe, explorer.exe, etc) when it starts & begins handling the DDE interface for the shell.
The built-in explorer process should call this when it starts, so it starts handling the appropriate calls.
It should call ShellDDEInit(1) when it starts and ShellDDEInit(0) when
it terminates. I'm not familiar enough with the explorer code currently
to know where.




More information about the wine-devel mailing list