Stub DDE interface for Progman.exe

Rolf Kalbermatter rolf.kalbermatter at citeng.com
Fri Feb 6 14:16:39 CST 2009



Rolf Kalbermatter
 

> -----Original Message-----
> From: Jeremiah Flerchinger [mailto:jeremiah.flerchinger at gmail.com] 
> Sent: Thursday, February 05, 2009 7:33 PM
> To: Rolf Kalbermatter
> Cc: wine-devel at winehq.org
> Subject: RE: Stub DDE interface for Progman.exe
> 
> On Thu, 2009-02-05 at 18:58 +0100, Rolf Kalbermatter wrote:
> > "Jeremiah Flerchinger" <jeremiah.flerchinger at gmail.com> wrote:
> > 
> > > The shell32.dll DDE callback isn't always initialized & handling 
> > > Progman calls for all apps. I've seen Progman calls pass 
> through the 
> > > DDE_client and DDE_server of user32.dll instead and never 
> go through 
> > > shell32.dll.
> > 
> > That would IMHO only be possible if the shell executable, which 
> > normally is just explorer creating the actual desktop view had been 
> > replaced by a different executable that does not initialize 
> the shell 
> > DDE interface properly.
> > 
> > Rolf Kalbermatter
> > 
> DdeConnect, DDeInitialize, and DDeDisconnect can be called 
> directly by including Windows.h and importing the calls from 
> user32 
> (http://msdn.microsoft.com/en-us/library/ms648745(VS.85).aspx)
. DDE calls can then be made with SendMessage or PostMessage. 
> 
> I found a couple apps that appear to do this. Wine does not 
> automatically start explorer.exe or initialize the shell DDE 
> interface, nor does it route the DdeConnect routine in 
> user32.dll to the DdeConnect routine in the shell32.dll. The 
> DDE interface in shell32 and user32 will need to call the 
> same set of routines from either method for full 
> functionality of DDE calls, including those to Progman.

Maybe I'm not understanding you here but you seem to mix the actual
and generic DDE support in user32 and the progman DDE server support
in shell32. All DDE applications (server and clients) have to use
the the DDE functions from user32.

Shell32 implements a DDE server that supports the progman interface
among other things. Explorer or any properly operating shell desktop
replacement will call the according shell32 export that initializes
that server. If the progman DDE interface is not available under
Windows you are not running any proper shell desktop process. Much
like in Windows 3.1 days where you could replace the progman.exe with
your own executable too but unless it implemented the progman DDE
interface too, no progman DDE was available.

Now if you want to add support for the progman DDE server to Wine
you will have to improve the stubs in shell32/dde.c. The ShellDDEInit()
function is already there and the initialization for the "progman",
"shell" and "folder" service too, but it is missing the implementation
for all the DDE operations on these services.

Rolf Kalbermatter




More information about the wine-devel mailing list