CMD enviado para adquirir Delphi
1, modificar s:= '/k ping www.163.com>AAA.txt'; volver La situación va a aaa.txt.
2. Si desea controlar el ping con precisión, puede considerar utilizar el método ping del control idicmpclient (en el cliente indy). Consulte la ayuda para el control específicamente.
3. En cuanto a obtener la dirección de la red pública, depende de si eres administrador de red. Utilice * * * para disfrutar navegando por Internet, principalmente utilizando la traducción de direcciones. Cada máquina no debe tener una dirección de red pública, pero debe mantener dinámicamente una dirección de red interna-dirección de red externa: tabla de mapeo de puertos en el enrutamiento (como un dispositivo de puerta de enlace). Sólo hay una dirección de red externa. Una vez que la dirección interna está conectada a la red externa, se utilizan diferentes puertos para corresponder a diferentes direcciones internas. Por lo tanto, solo el administrador de la red puede iniciar sesión en el dispositivo para verlo. También puede utilizar esta tabla para saber si la dirección interna está conectada a la red externa.
¡No sé si te sirve lo que dije!
7.3.5 Controlar la ejecución de las aplicaciones del servidor.
Un aspecto del control del programa cliente sobre la aplicación del servidor es que el programa cliente puede iniciar el programa servidor y cargar temas de sesión cuando sea necesario.
El punto más importante para que el cliente controle la aplicación del servidor es enviar comandos macro reconocidos por el servidor al servidor para completar varias operaciones en la aplicación del servidor. Consulte la documentación de la aplicación del servidor para saber qué comandos de macro son compatibles con el servidor.
Para enviar comandos de macro, necesita utilizar dos métodos de DDEClientConv, ExecuteMacro y ExecuteMacroLines. Su sintaxis es la siguiente:
Función ejecutar macro líneas(Cmd:PChar;WaitFlag: Boolean):Boolean;
Función ejecutar macro líneas(Cmd:TStrings;WaitFlag: Boolean):Boolean Escriba;
Cmd es la cadena de comando de macro o la lista vinculada de cadenas de comando de macro que se enviará. WaitFlag determina el comportamiento del programa cliente cuando el programa del servidor DDE ejecuta comandos macro. Si WaitFlag está configurado en True, no se permite llamar exitosamente a métodos como ExecuteMacro, ExecuteMacroLines, PokeData y PokeDataLines antes de que se ejecute la macro del servidor, y ninguno de ellos enviará datos al servidor y devolverá False. Si WaitFlag se establece en False, el método llamado intentará enviar datos al servidor antes de que se complete la primera macro.
La configuración de WaitFalg también depende de la aplicación del servidor. Cuando algunas aplicaciones intentan enviar datos o comandos a la primera macro antes de que haya completado su ejecución, puede provocar que la primera macro falle o tener consecuencias impredecibles. Para obtener más información, consulte la documentación de la aplicación del servidor.
El valor de retorno de esta función indica si la cadena de comando se transmitió exitosamente. Sin embargo, el cliente no puede detectar si el comando macro se ejecutó correctamente.
Dar formato al texto
DDEClientConv tiene una propiedad booleana FormartChars que se utiliza para determinar si se debe dar formato al texto. El llamado texto formateado se refiere a filtrar caracteres como retroceso (8), tabulación (7), avance de línea (10) y retorno de carro (13) de los datos de texto transmitidos. El código ASCII del carácter está entre paréntesis. Muchas veces, estos caracteres causan confusión en la visualización de los datos del cliente DDE.
El valor predeterminado de FormatChars es Falso.
7.3.7 Responder a eventos DDE
El componente DDEClientConv tiene dos eventos, OnOpen y una vez cerrado, que se activan al establecer y finalizar una sesión DDE respectivamente. El widget DDEClientItem tiene un evento OnChange. Este evento se utiliza normalmente para volcar y mostrar datos del proyecto DDE, como se muestra en la sección (7.3.1).
En modo automático, cuando se crea una ventana que contiene el gadget DDEClientConv, o cuando se llama al método SetLink, se activa el evento OnOpen; cuando se cierra el programa cliente o servidor, se activa el evento OnClose.
En modo manual, el evento OnOpen se activa cuando se llama al método OpenLink y el evento OnClose se activa cuando se llama al método ColseLink.
7.3.8 Intercambio de datos con programas cliente y Excel.
Creemos un programa cliente DDE y usémoslo para intercambiar datos con una hoja de cálculo en Excel. Interfaz de programación
Esta interfaz contiene un componente de sesión DDE DDEClientConv1 y un componente de proyecto DDE DDEClientItem1, que se utilizan para establecer y mantener conexiones DDE. El control RadioGroup y sus dos botones de radio AutoRadio y ManualRadio se usan para configurar el modo de conexión; un control GroupBox y sus dos botones RequestBtn y PokeBtn se usan para controlar la aplicación y el envío de datos, donde RequestBtn está atenuado en modo automático; Box Memo1 se usa para guardar datos DDE; el botón PasteBtn se usa para pegar información de conexión y establecer una conexión DDE; otro botón CloseBtn se usa para apagar el sistema.
Establezca la propiedad FormatChars de DDEClientConv1 en True durante el diseño para conservar el formato de visualización de los datos enviados por el servidor. ConnectMode conserva la configuración predeterminada de ddeAutomatic.
El programa define un miembro de datos privados Automático en la clase TForm1 para marcar el modo de unión. Los tres miembros de datos de cadena DDEService, DDETopic y DDEItem se utilizan para registrar información de conexión.
Inicializar variables y estados de componentes al generar la ventana.
Programa TForm1. FormCreate(remitente:al objeto);
Inicio
Solicitud Btn. enable:= False;
Autorradiografía. Marcado:=Verdadero;
Automático:=Verdadero;
Fin;
Cuando el modo de conexión cambia, el programa lo maneja en consecuencia.
Modo automático a modo manual:
Programa TForm1. ManualRadioClick(remitente:al objeto);
Iniciar
Si es automático, entonces
Iniciar
Solicitar Btn. habilitar := radio manual. Marcado;
DDEClientConv1. modo de conexión:= DDE manual;
Auto:=false;
Fin;
Fin;
Cambiar del modo manual al automático Modo:
Programa TForm1. Autorradiografía (remitente: al objeto);
Iniciar
Si no es automático, entonces
Iniciar
Solicitar botón. habilitar := radio manual. Marcado;
Si (DDEService = ' ') o (DDETopic = ' ') entonces
Iniciar
MessageDlg('No se puede establecer el enlace., mtWarning, [mbOK], 0);
Salir
Fin
DDEClientConv1. SetLink (DDEService, tema DDE);
DDEClientItem1. Conv DDE:= ddeclientconv 1;
DDEClientItem1. Elemento DDE:= Elemento DDE;
DDEClientConv1.
modo de conexión:= DDE automático;
Automático:=true;
Fin;
Fin;
Cambiar del modo automático al manual modo, solo necesita modificar los atributos correspondientes al cambiar del modo manual al modo automático, debe llamar a SetLink para restablecer la conexión; de lo contrario, a menudo se generará una excepción DDE.
Establecer una conexión pegando la información de la conexión desde el portapapeles es el método más flexible.
Programa TForm1. PasteBtnClick(Remitente: al objeto);
Iniciar
Si GetPasteLinkInfo (DDEService, DDETopic, DDEItem), entonces
Iniciar
DDEClientConv1 . SetLink (DDEService, tema DDE);
Si es automático, entonces
Iniciar
DDEClientItem1. Conv DDE:= ddeclientconv 1;
DDEClientItem1. Elemento DDE:= elemento DDE;
End;
End;
End;
GetPasteInfo está definido en la unidad de biblioteca DDEMan Función se utiliza para detectar si hay información de conexión en el portapapeles y devolver el servicio, tema y proyecto DDE correspondiente.
Para el modo manual, el cliente debe solicitar explícitamente datos al servidor. En este modo, los componentes del proyecto DDE son redundantes y la información de conexión DDE recibida se registra mediante una cadena. A continuación se muestra el código de implementación.
Programa TForm1. RequestBtnClick(remitente: al objeto);
Definir variable
Datos: PChar
Inicio
Si DDEItem = ' 'Entonces< / p>
Inicio
MessageDlg('No se pueden solicitar datos', mtWarning, [mbOK], 0);
Salir;
Fin;
los datos:= StrAlloc(79);
DDEClientConv1. OpenLink
datos:= DDEClientConv1. solicitar datos (elemento DDE);
DDEClientConv1. CerrarEnlace
Si los datos son & lt& gt entonces cero
Memo1. text:= StrPas(los datos);
StrDisPose(los datos);
End;
Los métodos OpenLink y CloseLink se utilizan para abrir y cerrar conexiones . El método RequestData solicita datos del servidor y los devuelve como una cadena PChar. A la cadena se le debe asignar memoria explícitamente y se desasigna al salir.
La transmisión de datos es diferente según los diferentes métodos de conexión. Para el modo manual se han añadido operaciones de apertura y cierre de conexión. La lista de programas es la siguiente.
Programa TForm1. PokeBtnClick(remitente: al objeto);
Iniciar
Si DDEItem = ' 'Entonces
Iniciar
MessageDlg('No se pueden introducir datos . ', mtWarning, [mbOK], 0);
Salir;
Fin;
Si es automático, entonces
DDEClientConv1. PokeDataLines(DDEItem, Memo1. Lines)
Otro
Inicio
DDEClientConv1.
OpenLink
DDEClientConv1. PokeDataLines(DDEItem, Memo1. Líneas);
DDEClientConv1. CerrarEnlace
Fin;
Fin;
Abra Excel en Microsoft Office, cargue un archivo, seleccione las unidades relevantes y cópielo al portapapeles. Luego ejecute el programa y presione el botón Pegar enlace, se establecerá la conexión DDE y los datos en la unidad correspondiente se mostrarán en Memo1. Después de eso, puede realizar una serie de tareas como conversión de modo, aplicación de datos y envío de aplicaciones. La pantalla después de ejecutar se muestra a continuación.
7.3.9 Utilice el programa cliente para controlar el administrador del programa.
El siguiente ejemplo utiliza un programa cliente para enviar comandos al Administrador de programas para crear grupos de programas, elementos de programas y eliminar grupos de programas.
El administrador de programas proporciona cadenas de comandos de interfaz DDE para las aplicaciones. Las aplicaciones pueden usar estas cadenas de comandos para lograr las siguientes funciones:
1. El formato del comando es:
CrearGrupo (nombre del grupo de programas [, ruta al grupo de programas])
Crear un grupo de programas cuando el grupo de programas no existe si el grupo de programas existe; , Se activará según la ruta especificada.
2. Eliminar grupo de programas
El formato del comando es:
Eliminar grupo (nombre del grupo de programas)
3.
El formato del comando es:
Grupo de visualización (nombre del grupo de programas, indicador de visualización)
El indicador de visualización se utiliza para controlar el grupo de programas en el máximo, forma mínima o normal que se muestra en el administrador.
4. Recargar el grupo de programas
El formato del comando es:
ReLoadGroup (nombre del grupo de programas)
Este comando activa el programa. administrador para eliminar y recargar un grupo de programas existente.
5. Agregue elementos del programa al grupo de programas.
El formato del comando es:
AddItem(línea de comando [, descripción [, ruta del icono [, número de serie del icono [, abscisa del icono, ordenada del icono [, directorio del espacio de trabajo [, tecla de acceso rápido [] , ya sea para minimizar la visualización del logotipo]]]]
La línea de comando controla la ejecución del elemento del programa. El elemento del programa puede incluir rutas, parámetros, etc. Otros parámetros corresponden a cuando se agrega el programa. elemento en el administrador de programas Los parámetros y opciones que deben configurarse tienen configuraciones predeterminadas, por lo que son opcionales
6. es:
ReplaceItem (nombre del elemento del programa)
Este comando elimina un elemento del programa y registra la ubicación del elemento del programa eliminado, y luego agrega un nuevo elemento del programa en la ubicación registrada mediante AddItem.
7. Eliminar elementos del programa del grupo de programas
El formato del comando es:
Eliminar elemento (nombre del proyecto)
Del grupo de programas actualmente activo Elimine el elemento del programa
8. Cierre el administrador de programas
El formato del comando es:
Salga del programa (si desea guardar). el indicador de información del grupo de programas)
El método para enviar la cadena de comando desde la aplicación al administrador de programas es básicamente el mismo. Para simplificar, solo se implementa un parámetro de cadena en la rutina, y el lector puede hacerlo fácilmente. extiéndalo más
Como se muestra en la figura, la interfaz de programación incluye un componente DDEClientConv y cuatro botones para completar diferentes funciones
DDEClientConv establece una sesión DDE con el administrador del programa en el diseño. tiempo, donde el servidor DDE y el tema DDE son PROGMAN. ConnectMode está configurado en ddeManual
Abstraemos la situación de envío de comandos con un solo parámetro de cadena para formar la siguiente función SendMacro. >Función TForm1.
EnviarMacro(nombre: cadena; comando: Cadena): booleano
Definir variables
Macro: cadena
Cmd: matriz [0..255 ]Char;
Inicio
Resultado:=Verdadero;
Si nombre<>''entonces
Inicio
macro:= Format('['+Comando+'(% s)]',[Nombre])+# 13 # 10;
StrPCopy (Cmd, macro);
DDEClient. OpenLink
Si no es DDEClient. Luego ejecute la macro (Cmd, False)
Resultado:=False;
DDEClient. CloseLink
End;
End;
El proceso primero usa la función Formato para formar una cadena de macro:
macro:= Formato ( '['+Command+'(% s)]',[Name])+# 13 # 10;
Luego copie la cadena de tipo Pascal en una cadena de tipo PChar que sea aceptable para el administrador del programa.
La conexión DDE utiliza el modo manual. Primero llame al método OpenLink. Luego llame al método ExecuteMacro para enviar el comando y devuelva False si falla. Finalmente, cierre la conexión con CloseLink.
CreateButton, AddButton y DeleteButton se utilizan para crear grupos de programas, agregar elementos de programas y eliminar grupos de programas respectivamente. La implementación de su programa es similar, como se muestra a continuación.
Crear grupo de programas:
Programa TForm1. CreateButtonClick(Remitente: al objeto);
Definir variable
Nombre: cadena;
Inicio
Nombre:= InputBox ('Entrada box', 'Ingrese el nombre del grupo', ' ');
Si Nombre = ' 'entonces
MessageDlg('El nombre del grupo no puede estar vacío., mtError, [mbOK ], 0)
Otro
Si SendMacro(Name, 'CreateGroup') = False, entonces
MessageDlg('No se puede crear el grupo., mtInformation, [mbOK] , 0);
Fin;
Agregar elementos planificados:
Programa TForm1. AddButtonClick(Remitente: al objeto);
Definir variable
Nombre: cadena;
Inicio
Nombre := InputBox ('Entrada box', 'Ingrese el nombre de ruta completo de la aplicación', ' ');
Si Nombre = ' 'entonces
MessageDlg('El nombre de la aplicación no puede estar vacío., mtError , [mbOK], 0)
Otro
Si SendMacro(Name, 'AddItem') = False entonces
MessageDlg('No se puede agregar el elemento. , mtInformation , [mbOK], 0);
Fin;
Eliminar grupo de programas:
Programa TForm1. DeleteButtonClick(Remitente: al objeto);
Definir variable
Nombre: cadena;
Inicio
Nombre:= InputBox ('Input box', 'Ingrese el nombre del grupo que se eliminará', ' ');
Si Name = ' 'entonces
MessageDlg('El nombre del grupo no puede estar vacío.
, mtError, [mbOK], 0)
Otro
Si SendMacro(Name, 'DeleteGroup') = False, entonces
MessageDlg('No se puede crear el grupo , mtInformation, [mbOK], 0);
Fin;
Implementación del programa de servidor DDE 7.4
El programa de servidor DDE responde a la solicitud del Cliente DDE, generalmente Contiene los datos que el programa cliente desea obtener.
Para crear un programa de servidor DDE, debe agregar un componente DDEServerItem al formulario. La propiedad text o Lines de DDEServerItem contiene los datos que se van a conectar. Normalmente, el widget DDEServerItem está asociado con otro control de texto. Cuando el contenido del control de texto cambie, actualice el valor del texto o la propiedad Líneas del DDEServerItem. El siguiente programa asocia un DDEServerItem con un cuadro de lista. Esta conexión se implementa en el evento OnChange del cuadro de lista.
Formulario del programa 1. OnListBoxChange(remitente:al objeto);
Iniciar
DDEServerItem1. Número de filas:= ListBox1. Item;
Fin;
Al crear un programa de servidor DDE, también puede agregar un componente DDEServerConv y usar la propiedad ServerConv de DDEServerItem para conectar los dos componentes. En este punto, el tema DDE se convierte en el nombre del componente DDEServerConv en lugar del título del componente con DDEServerItem.
Es necesario utilizar el componente DDEServerConv en las siguientes situaciones:
1. El título del formulario con el widget DDEServerItem puede cambiar en tiempo de ejecución, o puede haber otros formularios con el mismo título. En este caso, es posible que no se establezca la conexión DDE;
2. El programa cliente DDE puede enviar comandos macro al programa servidor. En este caso, sólo el componente DDEServerConv puede responder al evento OnMacroExecute y realizar las operaciones apropiadas.
7.4.1 Establecer una conexión con el programa cliente DDE.
En términos generales, establecer una conexión DDE es tarea del programa cliente. Sin embargo, el programa servidor puede copiar el enlace al portapapeles para que el programa cliente lo pegue y establezca una sesión DDE. Los pasos son los siguientes:
1. Llame al método CopyToClipboard del componente DDEServerItem para copiar el valor del atributo Texto (o Líneas) y la información de conexión DDE al portapapeles
2. Programa cliente DDE Insertar datos vinculados. Normalmente, esto se logra seleccionando el comando apropiado (como Editar | Pegado especial o Editar | Pegar enlace).
7.4.2 Responder a eventos DDE
La parte DDEServerConv tiene tres eventos: OnOpen, OnClose y OnExecuteMacro. Los dos primeros eventos se activan cuando se establece y finaliza una sesión DDE. Igual que (7.3.7).
El evento OnExecuteMacro se utiliza para responder a instrucciones macro enviadas por el programa cliente. El controlador de eventos OnExecuteMacro tiene un parámetro Msg para contener la cadena de comando enviada. Durante este proceso, los usuarios pueden decidir cómo responder a estas macros.
Solo hay un evento OnPokeData en la parte DDEServerItem. Este evento se utiliza en respuesta a los datos enviados por el programa cliente. Si el programa cliente es un programa Delphi, el programa cliente llama al método PokeData o PokeDataLines. En el proceso de gestión del evento, el usuario puede guardar los datos enviados en el lugar correspondiente. En términos generales, este debería ser el control de texto que toca DDEServerItem.
El siguiente programa guarda los datos enviados en un ListBox.
Formulario del programa 1. onddeservitempokedata(ser der:to object);
Inicio
Cuadro de lista 1. Artículos := DDEServerItem1. Line;
Fin;
7.4.3 Aplicación de servidor DDE
Creemos una rutina de servidor DDE y una rutina de cliente DDE correspondiente.
La rutina del servidor DDE puede realizar las siguientes operaciones:
1. Copiar la información de conexión DDE al portapapeles para otros programas.
2. a Otros programas proporcionan fuentes de datos;
3. Recibir datos enviados por el programa cliente;
4. Cambiar su estado de ejecución de acuerdo con las instrucciones macro enviadas por el programa cliente.
Los atributos clave de cada componente son los siguientes:
DDESrvrForm. ActiveControl = Memo1
DDESrvrForm. Menú = Menú Principal1
Pendiente1. Alinear = alTop
Nota1. Alinear = alClient
DDETestItem. ServerConv = DDETestTopic
Al configurar las propiedades de alineación de Bevel1 y Memo1, puede asegurarse de que la visualización de la pantalla siga siendo hermosa incluso si cambia el tamaño de la ventana.
Memo1 es la fuente de datos del servidor. El componente del proyecto DDE DDETestItem establece contacto con Memo1 a través del evento OnChange de Memo1.
Procesar TDdeSrvrForm.doOnChange(remitente: al objeto);
Iniciar
Si no es FInPoke, entonces
DDETestItem. Número de filas := Memo1. Line;
End;
FInPoke es un miembro de datos privados booleano que se utiliza para indicar si el programa está procesando la transferencia de datos desde el programa cliente. Cuando el cliente envía los datos y los transfiere a la fuente de datos, no es necesario transferirlos al componente del proyecto DDE.
Para copiar la información de conexión al portapapeles, simplemente llame al método CopyToClipboard de DDETestItem.
Procesar TDDESrvrForm. CopyClick(remitente:al objeto);
Iniciar
DDETestItem. CopyToClipboard
End;
Esto se llama a través del elemento de menú "Editar|Copiar".
La recepción de los datos enviados por el programa cliente está en el proceso de procesar el evento OnPokeData de DDETestItem. Cambie el valor de FInPoke durante el proceso de recepción para evitar una transmisión inversa de datos no válida.
Proceso TDDESrvrForm.doOnPoke(remitente:al objeto);
Iniciar
fin poke:= Verdadero;
Memo1. Número de filas: = DDETestItem. Línea;
fin poke:= False;
End;
Maneja las instrucciones macro enviadas por el cliente durante el evento OnExecuteMacro del componente de sesión DDE DDETestTopic. Nosotros * * * hemos definido cinco instrucciones macro que pueden responder: CopyDDE, Clear, WS_Normal, WS_MINIMIZED y WS_MAXIMIZED, que se utilizan para copiar información de conexión, borrar el contenido de Memo1 y cambiar el estado de visualización de la ventana respectivamente.
Procesar TDdeSrvrForm.doMacro(sender:TObjectmsg:TStrings);
Definir variables
Cmd: cadena;
I: entero;
Iniciar
cmd:="";
si msg. Contar = 0 y luego salir;
Para I:= 0 al mensaje. Cuenta-1 hacer
Inicio
Cmd:= Msg. String[I];
Si mayúscula (Cmd) = 'COPYDDE' entonces
DDETestItem. Tablero de escritura
de lo contrario, si mayúsculas (Cmd) = 'CLEAR ', entonces
Memo1.text: = ' '
de lo contrario, si mayúsculas (Cmd) = ' WS_NORMAL 'Entonces
Estado de la ventana:= wsNormal
elseIf mayúscula (Cmd) = 'WS_MINIMIZED 'Entonces
Estado de la ventana:= wsMinimized
elseIf en mayúscula (Cmd) = 'WS_MAXIMIZED' entonces
WindowState := wsMaximized
Otro
MessageDlg('Comando no válido', mtWarning, [mbOK], 0 );
End;
End;
El siguiente programa cliente DDE está diseñado principalmente para verificar el programa servidor DDE anterior, pero es un ejemplo completo de programación del cliente DDE. También se proporciona.
El programa guarda los datos DDE recibidos en un componente DDEDat de la clase TMemo, y los datos y las instrucciones macro que se enviarán al servidor se ingresan en otro componente de la clase TMemo, PokeDat. Los dos botones PokeBtn y ExecuteBtn se utilizan para enviar datos e instrucciones macro. Los dos elementos del menú "Archivo | Nuevo enlace" y "Editar | Pegar enlace" se utilizan para crear nuevos enlaces basados en la entrada del usuario y pegar enlaces DDE desde el portapapeles.
La conexión DDE se establece llamando al método SetLink.
El código de implementación para establecer una nueva conexión es el siguiente.
Procesar TFormD.doNewLink(remitente: al objeto);
Iniciar
DDEClient. SetLink (Nombre de la aplicación. Texto, Nombre del tema. Texto);
DDEClientItem. Conv DDE:= cliente DDE;
DDEClientItem. DDEItem := Nombre del artículo. Texto;
End;
El código de implementación para establecer una conexión pegando la información de conexión desde el portapapeles es el siguiente.
Programa TFormD. Editar1Hacer clic(remitente:al objeto);
Definir variables
Servicio, tema, proyecto: cadena;
Inicio
PegarEnlace1. habilitado:= GetPasteLinkInfo(Servicio, Tema, Elemento);
Fin;
Proceso TFormD.doPasteLink(remitente: al objeto);
Definir variables p>
Servicio, tema, proyecto: cadena;
Iniciar
Si GetPasteLinkInfo(servicio, tema, proyecto), entonces
Iniciar
Nombre de la aplicación. texto:= Servicio;
Nombre del tema. Texto:=Título;
Nombre del proyecto. texto:= Artículo;
DDEClient.
SetLink(servicio, tema);
DDEClientItem. Conv DDE:= cliente DDE;
DDEClientItem. DdeItem := Nombre del artículo. Texto;
End;
End;
Durante el procesamiento del evento OnChange, guarde el evento recibido en DDEClientItem.
Programa TFormD. DDEClientItemChange(remitente:al objeto);
Iniciar
DDEDat. Líneas := DDEClientItem. Line;
Fin;
El código de implementación de la transmisión de datos es el siguiente.
Procedimiento TFormD.doPoke(remitente: al objeto);
Definir variables
DDE CLI:TDDEClientConv;
Inicio
p>
DDECli := DDEClientItem. DdeConv
Si DdeCli & lt& gtentonces cero
DDECli. PokeDataLines (DDEClientItem.DDEItem,PokeDat.Lines);
Fin;
El código de implementación enviado por la macro instrucción es el siguiente.
Procesar TFormD.doMacro(remitente:al objeto);
Definir variables
DDE CLI:TDDEClientConv;
Cmd: cadena de caracteres ;
Iniciar
DDECli := DDEClientItem. DdeConv
Si DDECli & lt& gt entonces cero
Inicio
Cmd := PokeDat. texto+# 13 # 10;
DDECli. ExecuteMacroLines (PokeDat. Lines, true);
End;
End;
Ejecute los dos programas anteriores para establecer una conexión DDE. Después de las pruebas, la transmisión de datos, la transmisión de datos y la transmisión y ejecución de macroinstrucciones cumplieron con los requisitos esperados.
Resumen
El portapapeles y DDE son dos métodos de comunicación de datos en Windows. Delphi implementa las funciones correspondientes de una manera sencilla y amigable, brindando comodidad para la programación del usuario. En términos generales, el portapapeles se usa principalmente para la transmisión de datos estáticos y DDE se usa para el intercambio de datos dinámicos y el control de otros programas. Estos contenidos son muy importantes para el desarrollo de programas en entornos multiusuario.