entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Pasar datos entre ejecutables

Como pasar datos, parámetros, comandos o como lo entiendan, entre 2 ejecutables que estén corriendo.

Encontré información de como iniciar un exe con parámetros, pero lo que yo quiero es pasar un dato a un exe que ya esta iniciado, el otro lo interprete y ejecute alguna acción.

No se si influirá en la forma de traspaso de datos, pero utilizo ventanas WPF.

3 Respuestas

2votos

Leonardo-Tadei Puntos227320

En MS Windows, eso se hace con DDE o con COM

http://es.wikipedia.org/wiki/Dynamic_Data_Exchange
http://es.wikipedia.org/wiki/Component_Object_Model

Si lo que tenés que pasar no es muy frecuente y no requiere demasiada sincronía, se puede hacer perfectamente simple a mano: haces que el software que recibe los datos esté, cada X segundos, mirando un directorio, el software que emite los datos los escribe en ese directorio, el que recibe, al encontrar un archivo lo procesa y luego lo borra.

Acá tenemos cuncionando varios software con este esquema. Por comodidad, el formato del archivo es XML, con lo que tenemos todas las ventajas de validación del formato, además de hacerlo extensible.

Una de las ventajas de esta estrategia es que es multiplataforma: el cliente y el servidor no tienen por qué funcionar en el mismo SO.

0voto

Guidex comentado

Agradezco la respuesta, estuve investigando un poco por google y ya no existe DDE en NET, posteriormente a los DDE utilizaron remoting, pero también este fue desechado, actualmente están usando Windows Communication Foundation (WCF), pero aun no entiendo como codificar.

También se me ocurrió, como dijiste escribir en un archivo y que el otro este vigilando, pero me gustaría que sea de exe a exe, sin intermediarios si se puede, utilizare esta forma en ultimo caso.

Si pueden ayudarme con la codificación del WCF, se los agradecería.

0voto

Leonardo-Tadei comentado

Hola Guidex,

soy un programador muy feliz que hace años que no escribe ni una línea de código para MS Windows!!!

PD: la solución del archivo es de veras buena.

0voto

gcanedo Puntos630

En Delphi se puede hacer por medio de envío de Mensajes entre los programas corriendo a con el API SendMessage. Aquí viene mas información al respecto: http://delphi.about.com/od/windowsshellapi/a/wm_copydata.htm

0voto

Guidex comentado

Gracias por la respuesta, pero busco información respecto a NET, de delphi no se nada.

0voto

gcanedo comentado

En este caso es por medio de Delphi, pero si te fijas esta API utiliza una biblioteca nativa (Windows.pas) del sistema operativo, entonces se puede acceder a ella desde cualquier otro entorno de programación, ya sea C++, Delphi o VB. Pudiera ser user32.dll

0voto

Guidex comentado

Ok, gracias por la referencia, buscare info al respecto y si encuentro algo preciso, publicare la respuesta.

1voto

bl4z3r Puntos16850

@Guidex tienes varios mecanismos de comunicación entre archivos ejecutables para poder hacer lo que solicitas.

  1. Base de datos: persistes un dato en particular y luego, la otra aplicacion, lo lee.
  2. .Net Remoting: A nivel de performance y solución, esta seria la mas correcta por que, según tus necesidades, necesitas comunicación directa entre ejecutables.
  3. Message Queue: Dejas un mensaje en el sistema operativo y despues lo lees para su posterior uso. Es sencillo y eficaz.
  4. Archivo: es lo mismo que en base de datos, nada mas que persistes la información en un archivo.
  5. COM: esta es la opción mas flexible de todas pero tambien la mas complicada de implementar.
  6. WebServices: como REST API o WCF.

En lo posible, prueba con que la te haga sentir mas cómodo. Cualquier implementación es valida.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta