Dynamic Data Exchange was first introduced in 1987 with the release of
Windows 2.0 as a method of
interprocess communication so that one program could communicate with or control another program, somewhat like
Sun's RPC (Remote Procedure Call). At the time, the only method for communication between the operating system and client applications was the "Windows Messaging Layer." DDE extended this protocol to allow peer-to-peer communication among client applications, via message broadcasts. Because DDE runs via message broadcasts, it is vulnerable to any window-management code that does not
pump messages. This problem was not considered during the design of DDE, because DDE predates
pre-emptive multitasking in Microsoft Windows. Moreover, any code managing a window handle can respond to a DDE broadcast; the initiator of DDE must distinguish between expected and unexpected responses. DDE interlocutors usually express what information they seek in terms of hierarchical
string keys. For example, a
cell in
Microsoft Excel was known to DDE by its "application" name. Each application could further organize information by groups known as "topic" and each topic could serve up individual pieces of data as an "item". For example, if a user wanted to pull a value from Microsoft Excel which was contained in a spreadsheet called "Book1.xls" in the cell in the first row and first column, the application would be "Excel", the topic "Book1.xls" and the item "r1c1". Internal changes in the cell due to Excel actions would then be signaled (in reverse) to the calling application via additional message broadcasts. == Relationship to modern automation technologies ==