Hey folks, I looked around on google for some discussion of this, but didn't find anything. What's the current thinking on making Wine able to handle the DDE messages that old windows 3.1 apps used to use to install program icons?
In Microsoft Windows 3.1, this was handled by Progman.exe. In win95 and later, I think it's handled by Explorer.exe.
Should I perhaps add a DDE server to the placeholder implementation of explorer I submitted last week?
For what it's worth, I looked around for an example of a DDE server written in C, and found one written in 1992: http://www.the-oasis.net/thereef/files/c/ddeml.zip (possibly written by bob.hartman@esoft.com, it's hard to tell). That should come in handy as example source if we decide to do this. - Dan
Dan Kegel wrote:
Hey folks, I looked around on google for some discussion of this, but didn't find anything. What's the current thinking on making Wine able to handle the DDE messages that old windows 3.1 apps used to use to install program icons?
In Microsoft Windows 3.1, this was handled by Progman.exe. In win95 and later, I think it's handled by Explorer.exe.
Should I perhaps add a DDE server to the placeholder implementation of explorer I submitted last week?
For what it's worth, I looked around for an example of a DDE server written in C, and found one written in 1992: http://www.the-oasis.net/thereef/files/c/ddeml.zip (possibly written by bob.hartman@esoft.com, it's hard to tell). That should come in handy as example source if we decide to do this.
Anther possibly useful resource: http://www.angelfire.com/biz/rhaminisys/ddstudio.html
And here's something we might want to emulate for testing: http://www.mkssoftware.com/docs/man1/dde.1.asp
I'm vaguely tempted to write an xinetd for dde, so programs can accept dde messages on stdin and send responses via stdout :-) - Dan
I'm vaguely tempted to write an xinetd for dde, so programs can accept dde messages on stdin and send responses via stdout :-)
- Dan
the major concern here of course is how to start the DDE server(s) we would need to emulate window's behavior - either we start an explorer equivalent for each wine session, which can be rather costly - the xinetd proposition will be very hard to implement. in raw DDE management, the server lookup is separated from the message sending and it's quite difficult to cover all server lookup cases to actually launch the missing server (inetd only provides the mapping to the right server and the dynamic loading, but it won't solve the question of when to invoke inetd - which has to be done by wine anyway). server lookup methods include: - does a window of a given class name exist - broadcast to all toplevel windows of an init message
OTOH, implementing it only at DDEML level is way more easy, but won't cover all the cases (btw, I don't have any good idea of how much coverage we might lose in that case)
A+