Try OpenEdge Now
skip to main content
Programming Interfaces
External Program Interfaces : Windows Dynamic Data Exchange : Opening DDE conversations : Preparing the server application
 
Preparing the server application
Before opening a DDE conversation from the client, you must ensure that the server application is open on the Windows desktop, and that any server preparations required to make application topics available to the OpenEdge client are complete. The OpenEdge client can open the server application by either by invoking the ABL OS-COMMAND NO-WAIT statement or by executing the WinExec() program load function from the Window's kernel dynamic link library (DLL), kernel32.dll. The program load function provides additional features that include specifying the startup window state and returning a value that indicates whether the application actually started.
For example, the code fragment in i-ddeex2.p defines the interface to WinExec(), and uses it to load Microsoft Notepad.
i-ddeex2.p
DEFINE VARIABLE ReturnCode AS INTEGER NO-UNDO.

PROCEDURE WinExec EXTERNAL "KERNEL32.DLL":
  DEFINE INPUT PARAMETER ProgramName AS CHARACTER.
  DEFINE INPUT PARAMETER VisualStyle AS LONG.
  DEFINE RETURN PARAMETER StatusCode AS LONG.
END PROCEDURE.

/**************************************************/
/* NOTE: VisualStyle parameters are as follows: */
/* 1 = Normal 2 = Minimized */
/**************************************************/

RUN WinExec (INPUT "NOTEPAD", INPUT 1, OUTPUT ReturnCode).
IF ReturnCode >= 32 THEN
  MESSAGE "Application was Started" VIEW-AS ALERT-BOX.
ELSE
  MESSAGE "Application Failed:" ReturnCode VIEW-AS ALERT-BOX.

/**********************************************************************/
/* RETURN CODE DESCRIPTION */
/* If the function is successful, the return value from WinExec */
/* identifies the instance of the loaded module. Otherwise, the */
/* return value is an error value between 0 and 32. */
/* */
/* 0 System was out of memory, executable file was corrupt, or */
/* relocations were invalid. */
/* 2 File was not found. */
/* 3 Path was not found. */
/* 5 Attempt was made to dynamically link to a task, or there */
/* was a sharing or network protection error. */
/* 6 Library required separate data segments for each task. */
/* 8 There was insufficient memory to start the application. */
/* 10 Windows version was incorrect. */
/* 11 Executable file was invalid. Either it was not a Windows */
/* application or there was an error in the .EXE image. */
/* 12 Application was designed for a different operating system. */
/* 13 Application was designed for MS-DOS 4.0. */
/* 14 Type of executable file was unknown. */
/* 15 Attempt was made to load a real-mode application */
/* (developed for an earlier version of Windows). */
/* 16 Attempt was made to load a second instance of an executable */
/* file containing multiple data segments that were not */
/* marked read-only. */
/* 19 Attempt was made to load a compressed executable file. */
/* The file must be decompressed before it can be loaded. */
/* 20 Dynamic link library (DLL) file was invalid. One of the DLLs */
/* required to run this application was corrupt. */
/* 21 Application requies Microsoft Windows 32-Bit extensions. */
/**********************************************************************/
Depending on the application, the client might then open an initial conversation for the System topic and execute server commands to initialize additional topics.