Rolf Kalbermatter
-----Original Message----- From: Jeremiah Flerchinger [mailto:jeremiah.flerchinger@gmail.com] Sent: Thursday, February 05, 2009 7:33 PM To: Rolf Kalbermatter Cc: wine-devel@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@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