Enlace DDE (programación)
Esta funcionalidad está pensada para
desarrolladores que quieren que sus aplicaciones puedan comunicarse con
SodelsCot para realizar lecturas de textos sin necesidad de modificar el
Portapapeles de Microsoft Windows.
Cuando una aplicación externa envía un texto o un fichero mediante DDE (Dynamic Data Exchange)
para que SodelsCot lo lea, éste lo hará con todos los parámetros especificados
en la ventana de configuración. Existen dos comandos en la comunicación DDE, SPEAK y FILETXT. El
primero hace que SodelsCot lea el texto que le sigue y el segundo hace que lea el fichero especificado. Después
del comando es necesario dejar un espacio en blanco.
Sintaxis
SPEAK <texto> Lee el texto especificado. Ejemplo: SPEAK Prueba de lectura DDE
FILETXT <fichero> Lee el fichero indicado. Ejemplo: FILETXT C:\Mis archivos\documento.pdf
Ejemplo VBA
El siguiente código es un
sencillo ejemplo de una macro en Excel para leer la celda A1.
Sub Main()
canal = DDEInitiate("SodelsCot Empresarial", "Voice")
DDEExecute canal, "SPEAK " & Range("A1") ' lee la celda A1
DDETerminate canal
End Sub
Para la edición Profesional habría que especificar "SodelsCot Profesional" en DDEInitiate
Ejemplo C#
Se puede establecer una comunicación desde C# utilizando APIs de Windows. El siguiente fragmento muestra una función
con los comándos mínimos para enviar un texto a SodelsCot.
private void button1_Click(object sender, EventArgs e)
{
int instanceId = 0;
DdeInitialize(ref instanceId, 0, 0, 0);
IntPtr serviceHandle = DdeCreateStringHandle(instanceId, "SodelsCot Empresarial", CP_WINANSI);
IntPtr topicHandle = DdeCreateStringHandle(instanceId, "Voice" , CP_WINANSI);
IntPtr handle = DdeConnect(instanceId, serviceHandle, topicHandle, IntPtr.Zero);
DdeFreeStringHandle(instanceId, topicHandle);
DdeFreeStringHandle(instanceId, serviceHandle);
byte[] data = System.Text.Encoding.Unicode.GetBytes("SPEAK Prueba desde C#" + "\0");
int returnFlags = 0;
IntPtr result =
DdeClientTransaction(
data,
data.Length,
handle,
IntPtr.Zero,
CF_TEXT,
XTYP_EXECUTE,
1000,
ref returnFlags);
DdeDisconnect(handle);
DdeUninitialize(instanceId);
}
La clase DDECliente.cs muestra un ejemplo más completo de comunicación por DDE en C#.
Ejemplo Visual Basic 6
El siguiente ejemplo
muestra un sencillo programa en Visual Basic que realiza la comunicación con
SodelsCot.
Formulario
Contiene dos OptionButton para indicar la edición de
SodelsCot con la que se va a comunicar, un TextBox que será modificado cuando SodelsCot termine la lectura
y dos Button para enviar el texto o el fichero especificado.

Código fuente
Utiliza el TextBox Vinculo para enlazar con
SodelsCot y envía el texto precedido del comando "SPEAK" o "FILETXT"
dependiendo del botón pulsado. El cambio de la propiedad Text de Vinculo a "StopSpeaking" indica el final de la lectura de SodelsCot.
' establece el
vínculo DDE con SodelsCot y le envía el texto para leer
Private
Sub EnviarTxt_Click()
On Error GoTo Err_EnviarTxt_Click
With Vinculo
.LinkMode = vbLinkNone