DDE and Clipboard Exchange Between WIN-OS/2 and PM 4/2/93 ================================================== Quick notes from the Boca Programming Center about DDE and clipboard Exchange between PM and VDM's or between VDM's. The implementation and configuration of DDE and Clipboard depends upon which version of OS/2 is installed. Basically, there are two different implementations of DDE and Clipboard, either GA (version 2.0) or post GA (any RELEASE AFTER GA 2.0). DDE (DYNAMIC DATA EXCHANGE) =========================== Implementation -------------- In OS/2 2.x, all DDE communication between WIN-OS/2 and PM (or between separate WIN-OS/2 sessions) is handled by "agents". These agents are responsible for the conversion of the DDE protocol and formats. They must be running for DDE communication to take place between sessions. PUBLIC - DDE messages are exported and imported between PM and WIN-OS/2 sessions. PRIVATE - DDE messages are contained within the one session only. No data will be transferred out of or into the vdm. OS/2 2.0 -------- The following are the names and locations of the agents needed to make DDE public: c:\os2\pmdde.exe (PM DDE agent) c:\os2\mdos\winos2\ddeagent.exe (WIN-OS/2 DDE agent) c:\os2\mdos\winos2\vdmserver.exe (inter-vdm IPC handler) In the c:\os2\mdos\winos2\system.ini, the following statements are required to start the WIN-OS/2 DDE Agent: SAVDMApps=!gopm,!clipwos2,!ddeagent MAVDMApps=!gopm,!clipwos2,!ddeagent WOS2VDMApps=!clipwos2,!ddeagent DDE is "automatically" set public by the presence of the !ddeagent entry. The !ddeagent entry starts and minimizes the WIN-OS/2 DDE Agent when a vdm is loaded. PM -- An entry for "Data Update" should be in the PM Window List after executing a WIN-OS/2 session. Should this get closed, PM DDE communication will become private. DDE messages will be transferred between vdm's but not to PM. To restart Data Update, open the "Productivity" folder located in "OS/2 System" folder an double-click on the "Data Update" object. WIN-OS/2 -------- An entry for "DDE Interchange Agent" should be in the WIN-OS/2 Task List. Should this get closed, DDE communication becomes private for this vdm. To restart the DDE Agent, click on the DDE Interchange Agent located in the "WIN-OS/2 Accessories" folder. Changing Default from Public to Private --------------------------------------- DDE defaults to public. To change the default remove the !ddeagent entries from the system.ini file. To set a particular vdm private, close the "DDE Interchange Agent" in the respective vdm by clicking once with the left mouse button on the minimized "DDE Interchange Agent" icon and selecting close. Note : There is no way to selectively set DDE private in seamless WIN-OS/2 sessions. 2.0+ (Anything after 2.0) ------------------------- The agents have been converted from executables to dll's, and are loaded if the you have specified that you want DDE to be public. Required files: c:\os2\pmdde.dll (the PM DDE agent) c:\os2\mdos\winos2\system\winsdde.dll (the WIN-OS/2 DDE agent) c:\os2\mdos\vwin.sys (inter-vdm IPC handler) There are no required entries in the c:\os2\mdos\winos2\system.ini file. DDE is "automatically" made public when the above dll's are loaded during vdm startup. If the dll's are not present, DDE will be private. You will no longer see an entry for "Data Update" in the PM You will no longer see an entry for "Data Update" in the PM Window List or "DDE Interchange Agent" the WIN-OS/2 Task List. Changing Default from Public to Private --------------------------------------- DDE still defaults to public, but there are now settings which allow you to switch between public and private. To change the default use the "WIN-OS/2 Setup" object located in the "System Setup" folder which is in the "OS/2 System" folder. - Set Dynamic Data Exchange private on the Data Exchange page to stop DDE communication between PM and WIN-OS/2. - Set the WIN_DDE WIN-OS/2 setting "off" to make all vdm's private. This setting is accessed through the push button on the 3.1 Session Page. Special Considerations ---------------------- When running full screen,VIDEO_SWITCH_NOTIFICATION must be set to "On" and VIDEO_8514A_XGA_IOTRAP must be set to "Off". Note: With OS/2 2.1, VIDEO_8514A_XGA_IOTRAP has been renamed to VIDEO_DEVICE_IOTRAP. For any release of OS/2 other than 2.1, these settings are not the default. These setting are located on the WIN-OS/2 Settings page. The setting page is displayed when you click on the "WIN-OS/2 Settings" push button located on the "Settings" notebook page for an object. The "Settings" notebook page can be displayed by pressing the RIGHT mouse button on an object, and selecting the "Settings" submenu of the "Open" menu item. It is also recommended that the os/2 desktop icon (in the lower left-hand side of the screen) is used to when switching out of a fullscreen session. Using alt-esc to switch between sessions has been known to cause some applications (such as Excel) to ignore DDE messages. (The alt key puts applications into menu-mode.) Known Restrictions ------------------ The ONLY coding recommendation is that a Windows DDE Client application should not broadcast the following during the processing of its WM_CREATE message: SendMessage (0xFFFF,WM_DDE_INITIATE,hwnd,MAKELONG (atomAppName, atomTopic)) In later versions of OS/2 (post GA 2.0) the dll's required to exchange DDE between WIN-OS/2 and PM may still be in the process of being loaded. CLIPBOARD ========= Implementation -------------- In OS/2 2.x, all exchange of clipboard formats between WIN-OS/2 and PM, or between separate WIN-OS/2 sessions, is also handled by "agents". These agents are responsible for the conversion of the clipboard formats. They must be running for clipboard information to be exchanged between sessions. PUBLIC - Clipboard formats are exported and imported between PM and WIN-OS/2 sessions. PRIVATE - Clipboard data is contained within a single session only. No clipboard data will be transferred out of or into the vdm. OS/2 2.0 -------- The following are the names and locations of the agents needed to make clipboard public: c:\os2\clipos2.exe (PM clipboard agent/viewer) c:\os2\mdos\winos2\clipwos2.exe (WIN-OS/2 clipboard agent/viewer c:\os2\mdos\winos2\vdmserver.exe (inter-vdm IPC handler) In the c:\os2\mdos\winos2\system.ini, the following statements are required to start the WIN-OS/2 clipboard agent: SAVDMApps=!gopm,!clipwos2,!ddeagent MAVDMApps=!gopm,!clipwos2,!ddeagent WOS2VDMApps=!clipwos2,!ddeagent Clipboard is "automatically" set public by the presence of the !clipwos2 entry. The !clipwos2 entry starts and minimizes the WIN-O/2 Clipboard Agent when a vdm is loaded. PM -- An entry for "Clipboard" should be in the PM Window List after executing a WIN-OS/2 session. Should this get closed, PM's clipboard will become private. Data will be transferred between vdm's but not to PM. To restart the PM Clipboard, open the "Productivity" folder located in "OS/2 System" folder and double-click on the "Clipboard Viewer" object. WIN-OS/2 -------- An entry for "Clipboard" should be in the WIN-OS/2 Task List. Should this get closed, the vdm's clipboard will become private. To restart the clipboard, click on the clipboard object located in the "WIN-OS/2 Accessories" folder. Changing Default from Public to Private --------------------------------------- Clipboard defaults to public. To change the default remove the !clipwos2 entries from the system.ini file. To set a particular vdm private, deselect "Public Clipboard" which is located in the "Options" menu bar of the WIN-OS/2 Clipboard Viewer. Note : There is no way to selectively set the clipboard private in seamless WIN-OS/2 sessions. 2.0+ (Anything after 2.0) ------------------------- The agents have been converted from executables to dll's, and are loaded if you have specified that you want the clipboard to be public. Required files: c:\os2\pmclip.dll (PM Clipboard agent) c:\os2\mdos\winos2\system\winsclip.dll (WIN-OS/2 Clipboard agent c:\os2\mdos\vwin.sys (inter-vdm IPC handler) There are no required entries in the c:\os2\mdos\winos2\system.ini file. Clipboard is "automatically" made public when the above dll's are loaded during vdm startup. If the dll's are not present, clipboard will be private. You will no longer see an entry for "Clipboard" in the PM Window List or the WIN-OS/2 Task List. Changing Default from Public to Private --------------------------------------- Setting the clipboard to public or private is no longer done with the Clipboard Viewer. To change the default use the "WIN-OS/2 Setup" object located in the "System Setup" folder which is in the "OS/2 System" folder. - Set Clipboard "private" on the Data Exchange page to stop the transferring of clipboard data between PM and WIN-OS/2. - Set the WIN_CLIPBOARD setting "off" to make all vdm's private. This is accessed through the push button on the 3.1 Session Page. To set a particular vdm private, set the WIN_CLIPBOARD setting "off" for that vdm. This is accessed through the vdm's notebook settings. Click on the WIN-OS/2 settings push button on the session page and set WIN_CLIPBOARD "off". Special Considerations ---------------------- When running full screen,VIDEO_SWITCH_NOTIFICATION must be set to "On" and VIDEO_8514A_XGA_IOTRAP must be set to "Off". Note: With OS/2 2.1, VIDEO_8514A_XGA_IOTRAP has been renamed to VIDEO_DEVICE_IOTRAP. For any release of OS/2 other than 2.1, these settings are not the default. These setting are located in the WIN-OS/2 Settings page. The setting page is displayed when you click on the "WIN-OS/2 Settings" push button located on the "Settings" notebook page for an object . The "Settings" notebook page can be displayed by pressing the RIGHT mouse button on an object, and selecting the "Settings" submenu of the "Open" menu item. Known Restrictions ------------------ - No metafile/picture format conversion between WIN-OS/2 and PM. If a PM application copies a metafile to the clipboard, the agents do not transfer this format to the WIN-OS/2 clipboard. If a Windows application copies a picture to the clipboard, the agents do not transfer this format to the PM clipboard. DEVELOPMENT =========== There are no special coding requirements (except those specified under DDE, Known Restrictions) to transfer clipboard or DDE data between WIN-OS/2 and PM. A developer simply codes the application in its native environment. That is, if you are writing an application for the PM environment you would code it as if you are communicating with another PM application. The same applies to the WIN-OS/2 environment. ADDITIONAL INFORMATION ====================== See the "README" located in the root directory of the drive on which you installed OS/2 (for example c:\readme) for additional DDE and clipboard considerations. Additional information can be found in the "Master Help Index", subjects entitled "DDE (dynamic data exchange)" and "CLIPBOARD". Regards Glenn Puchtel (Boca Programming Center) Lisa Garcia (Boca Programming Center)