INFO: DDE Support in Internet Explorer Versions

ID: Q160957


The information in this article applies to:


SUMMARY

Several years ago Spyglass Inc. defined a Software Development Interface (SDI) that has served as the basis for most common interprocess communication (IPC) support in current browsers.

The SDI is composed of a number of generic, platform-independent verbs that are implemented through platform-specific transports. For Internet Explorer (IE) running in the Microsoft Windows environment, that platform-specific transport is DDE.

The 16-bit versions of Internet Explorer for Windows 3.1 and Windows NT 3.51 very closely followed this Spyglass specification. Versions 2.x and 3.x of the 16-bit Internet Explorer supported the entire list of topics as well as parameters outlined in the spec. If your application specifically targets the 16-bit version of Internet Explorer, please refer to the Spyglass SDI specs above for more information on its DDE support.

On the other hand, the 32-bit versions of Internet Explorer supported only a subset of the topics described in the Spyglass SDI specification. This article specifically lists this subset of topics supported by the 32-bit Internet Explorer versions, as well as relevant DDE-specific information for each of these topics.


MORE INFORMATION

Most of the information below applies to the 32-bit versions of Internet Explorer, unless specifically indicated.

In each of the following DDE transactions, you need to specify the following:


   ApplicationName : iexplore
   DDE Transaction Type: XTYP_EXECUTE or XTYP_REQUEST 
Topic and item names and expected return values for each verb are described below. Note that Internet Explorer version 2.0 and earlier used "mosaic" as its service name, instead of "iexplore."

Note that all strings passed to DDEML using DdeCreateStringHandle are limited to 255 characters. When passing item names to any of the topics described below, strings greater than 255 characters long are truncated.

For more information about this 255-character limit in DDEML, please see the following article in the Microsoft Knowledge Base:
Q102570 DOCERR: DdeCreateStringHandle() lpszString param

OpenURL

OpenURL retrieves a URL off the Web and displays it, based on specified WindowID:

   topicName: WWW_OpenURL
   itemName : URL  &lt;Example: "<LINK TYPE="GENERIC" VALUE="http://www.microsoft.com"&gt;">http://www.microsoft.com"&gt;</LINK>
   returnValue: -2 for acknowledgment, -3 for error 
In the 32-bit versions of Internet Explorer, all other parameters specified in the SDI spec are ignored.

Note that when specifying the URL for the 16-bit version of Internet Explorer, be sure to specify the full URL, including the protocol, for example:
For more information, please see the MSDN Web Workshop:
http://msdn.microsoft.com/workshop/default.asp
instead of "www.msdn.microsoft.com"; otherwise, the OpenUrl call will fail.

For IE4, itemName can be specified as follows:


   itemName: URL,[FileSpec],WindowID  &lt;Example:
   "<LINK TYPE="GENERIC" VALUE="http://www.microsoft.com",,0&gt;">http://www.microsoft.com",,0&gt;</LINK> 


Note that the second parameter, FileSpec, specified in the SDI spec, is ignored, and is, therefore, not specified in the itemName example above. All other parameters following the WindowID parameter that are not specified above are similarly ignored.

Specifying a WindowID of 0 tells the browser to open a new window; whereas, -1 opens the URL in the most recently active browser window.

ShowFile

ShowFile passes FileSpec to be rendered in a given WindowID:


   topicName: WWW_ShowFile
   itemName: FileSpec
   returnValue: -2 for acknowledgment, -3 for error 


All other parameters are ignored.

ActivateWindow

Regardless of the WindowId specified, ActivateWindow brings the most recently active browser window to the foreground:

   topicName: WWW_Activate
   itemName:  WindowID &lt;any value&gt;
   returnValue: WindowID 
All other parameters are ignored.

Note that the WindowID returned is synthetic; that is, it can only be used in other DDE transactions with Internet Explorer. It should not be assumed as an HWND.

Exit

Exit tells the browser to shut down and exit:

   topicName: WWW_Exit
   itemName: WWW_Exit
   returnValue: 0 

RegisterURLEcho

RegisterURLEcho requests that ApplicationName be notified of URLEcho events whenever a URL gets loaded. Multiple servers can be registered to get these notifications:

   topicName: WWW_RegisterURLEcho
   itemName: ApplicationName (enclosed in double quotes)
   returnValue: Non-Zero for success, 0 for failure 
ApplicationName is a DDE server that is registered to receive WWW_URLEcho notifications from the browser with the following information:

   topicName (hsz1): WWW_URLEcho
   itemName  (hsz2): URL,MIMEType,WindowID
   &lt;Example: "<LINK TYPE="GENERIC" VALUE="http://www.home.com","text/html",-1&gt;">http://www.home.com","text/html",-1&gt;</LINK>
   Transaction: XTYP_POKE 


NOTE: WWW_RegisterURLEcho and WWW_UnRegisterURLEcho are new to IE 3.01. An application using IE 3.0 may need to upgrade to IE 3.01 to take advantage of this functionality.

UnRegisterURLEcho

UnRegisterURLEcho terminates associated request for URLEcho events notification:

   topicName: WWW_UnRegisterURLEcho
   itemName:  ApplicationName (enclosed in double quotes)
   returnValue: 0 
Internet Explorer 4 returns success/failure on this (instead of ALWAYS 0).

RegisterProtocol

RegisterProtocol registers the DDE Server application, Server.exe, to handle URLs of a specific Protocol type:

   topic Name: WWW_RegisterProtocol
   item Name:  AppName,Protocol &lt;Example:"AppName","mailto"&gt;
 
Where "AppName" is Server.exe's registered Service Name, and "mailto" is the protocol to be registered.

Note that each of the strings have to be explicitly enclosed in double quotes. For Example, in C, the same string will have to be specified as follows:

   "\"AppName\",\"mailto\""
   returnValue: Non-Zero for success, 0 for failure 
Server.exe will then get notifications from the browser with the following information:

   topic Name (hsz1): WWW_OpenURL
   item Name  (hsz2): URL,[FileSpec],WindowID,Flags
   &lt;Example:"mailto:billg@ms.com",,-1,0&gt;
   Transaction: XTYP_REQUEST 


Note that Flags is currently undefined and is always set to 0.

In order to convert hsz1 and hsz2 into strings, the function DdeQueryString needs to be called.

Note that, as indicated in the specification, a protocol can be registered to only one DDE server application at a time. In this case, only the application Server.exe will get notifications from the browser whenever the user clicks on any "mailto:" reference on a Web page.

NOTE: As of Internet Explorer 4.0, RegisterProtocol (and UnRegisterProtocol) are no longer supported. The replacement technology for DDE in this regard is "Asynchronous Pluggable Protocols." See the REFERENCES section.

UnRegisterProtocol

UnRegisterProtocol terminates associated request for protocol notification:

   topicName: WWW_UnRegisterProtocol
   itemName:  ApplicationName (enclosed in double quotes)
   returnValue: 0 

ListWindows

According to the Spyglass specification, returns a list of window IDs for windows currently used by the browser:

   topicName: WWW_ListWindows
   itemName:  WWW_ListWindows
   returns: NumItemsInTheList,ArrayOfWindowIDs
   (ie [count,winID,winID,winID]) 
Currently Internet Explorer does not return a list of window IDs, but rather a list corresponding to the number of instances of the browser that are currently opened. For additional information, please see the following article in the Microsoft Knowledge Base:
Q191508 PRB: Confusing Return Values from DDE topic WWW_ListWindows

GetWindowInfo

Returns URL and WindowText currently being displayed in the browser window:

   topicName: WWW_GetWindowInfo
   itemName:  WWW_GetWindowInfo
   returnValue: URL,WindowText
   &lt;Example: "<LINK TYPE="GENERIC" VALUE="http://www.microsoft.com/","Microsoft">http://www.microsoft.com/","Microsoft</LINK> Home Page"&gt; 
Note that the strings are quoted; therefore, double quotes are denoted with backslashes. For example, if the title consists of the three characters !"!, the title portion of the returned string as the six characters "!\"!".

Summary Table

The following table summarizes the DDE topics that are supported by various versions of Internet Explorer:

"SpyGlass" indicates that the topic is described in the SpyGlass specification located at WWW.SPYGLASS.COM (search for "SDI").

                                              16bit     16bit      SP1 Beta
                                         3.02 3.03 4.0  4.0  4.01  4.01 5.0
     DDE Topic                  Status         *   1712 PP2  2106  3110 626
   ___________________________  ________ __________________________________
   WWW_Activate                 SpyGlass   X    X    X    X    X    X     X
   WWW_BeginProgress            SpyGlass        X
   WWW_CancelTransaction        SpyGlass   X    X
   WWW_EndProgress              SpyGlass        X
   WWW_Exit                     SpyGlass   X    X    X    X    X    X     X
   WWW_GetWindowInfo            SpyGlass   X    X    X    X    X    X     X
   WWW_ListWindows              SpyGlass   X    X    X    X    X    X     X
   WWW_MakingProgress           SpyGlass        X
   WWW_OpenURL                  SpyGlass   X    X    X    X    X    X     X
   WWW_OpenURLResult            SpyGlass        X
   WWW_ParseAnchor              SpyGlass   X    X
   WWW_QueryVersion             SpyGlass   X    X
   WWW_RegisterAppClose         SpyGlass        X
   WWW_RegisterDone             SpyGlass   X    X
   WWW_RegisterProtocol         SpyGlass   X    X
   WWW_RegisterURLEcho          SpyGlass   X    X    X    X    X    X     X
   WWW_RegisterViewer           SpyGlass   X    X
   WWW_RegisterWindowClose      SpyGlass   X    X
   WWW_SetProgressRange         SpyGlass        X
   WWW_ShowFile                 SpyGlass   X    X    X    X    X    X     X
   WWW_UnRegisterAppClose       SpyGlass        X
   WWW_UnRegisterProtocol       SpyGlass   X    X
   WWW_UnRegisterURLEcho        SpyGlass   X    X    X    X    X    X     X
   WWW_UnRegisterWindowClose    SpyGlass   X    X
   WWW_UnRegisterViewer         SpyGlass   X    X 
For additional information, please see the following articles in the Microsoft Knowledge Base:
Q160976 How to Control the Currently Running Instance of IE3 via DDE
Q191508 Confusing Return Values from DDE topic WWW_ListWindows


REFERENCES

"Software Development Interface" document at WWW.SPYGLASS.COM

For more information, please see the MSDN Web Workshop:

http://msdn.microsoft.com/workshop/default.asp

Additional query words: DDE kbDSupport kbdsi ie2 ie


Keywords          : kbDDE kbIE300 kbIE301 kbIE400 kbIE401 kbIE302 kbIE401sp1 kbIE500dp1 kbDSupport 
Version           : WINDOWS:3.0,3.01,3.02,4.0,4.01,4.01 SP1,5.0dp1
Platform          : WINDOWS 
Issue type        : kbinfo 

Last Reviewed: July 23, 1999