The (autoload) library(dde) defines primitives to realise simple DDE server applications in SWI-Prolog. These features are provided as of version 2.0.6 and should be regarded prototypes. The C-part of the DDE server can handle some more primitives, so if you need features not provided by this interface, please study library(dde).
+Service(+Topic, +Item, +Value)Service is the name of the DDE service provided (like progman in the client example above). Topic is either an atom, indicating Goal only handles requests on this topic or a variable that also appears in Goal. Item and Value are variables that also appear in Goal.
The example below registers the Prolog current_prolog_flag2 predicate to be accessible from other applications. The request may be given from the same Prolog as well as from another application.
Handling DDE execute requests is very similar. In this case the template is of the form:
+Service(+Topic, +Item)
Passing a Value argument is not needed as execute requests either succeed or fail. If Goal fails, a `not processed' is passed back to the caller of the DDE request. dde_unregister_service1+Service Stop responding to Service. If Prolog is halted, it will automatically call this on all open services. dde_current_service2-Service, -Topic Find currently registered services and the topics served on them. dde_current_connection2-Service, -Topic Find currently open conversations.