FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Duda sobre WM_COPYDATA y C
Hola amigos, ya me ayudaron una vez para conseguir comunicar dos procesos con builder pero ahora me surge la duda de si eso es posible en C con procesos de consola o si no es posible en C pues c++ de consola.
La misma duda pero con sockets ya que estuve mirando pero nada de lo que veo me compila y da millones de errores y además no entiendo las cosas que hacen. Algún tutorial donde lo explique bien y a ser posible en español me seria muy instructivo. Gracias de antemano. |
#2
|
||||
|
||||
El mensaje WM_COPYDATA sólo es posible recibirlo en app de ventanas, por lo que no funciona en una consola.
Sin embargo puedes hacer una app de ventanas sin usar la VCL de Builder, con su bucle de mensajes capaz de recibir el mensaje WM_COPYDATA y procesarlo. Esta APP puede tener una ventana invisible diseñada sólo para recibir los mensajes WM_COPYDATA. Esto es posible tanto en C como en C++. Otra forma de comunicar dos procesos en con los archivos de memoria compartida, en este caso no hace falta un bucle de mensajes pero si un mecanismo que permita consultar dicha memoria en un bucle. También puedes usar las Atom Tables. Por último tienes la posibilidad de crear un sistema cliente/servidor con sockets a bajo nivel con lo que prescindes de la VCL. En este caso tampoco necesitas un bucle de mensajes Windows pero si un bucle para tratar los sockets. Este último sistema te servirá para comunicar aplicaciones entre el mismo o diferentes PCs Saludos. Última edición por escafandra fecha: 04-03-2017 a las 23:40:03. |
#3
|
||||
|
||||
Para contestar a tu duda sobre WM_COPYDATA en "C" te muestro este ejemplo de una aplicación sin ventana visible que se manda a sí misma un mensaje WM_COPYDATA y lo responde. Está escrita en C
Código PHP:
Saludos. |
#4
|
||||
|
||||
Muy interesante ¿y que hay que cambiar para que la ventana no sea invisible?
Otra cosa, si quisiera enviar el mensaje a otra ventana ¿solo necesito el handle de esa ventana? Me interesa mucho lo que dices de sockets a bajo nivel ¿no tienes ningún texto donde se explique con ejemplos y cosas así? Y sobre lo de la memoria compartida tengo mucha curiosidad de ver como se hace eso porque no tengo ni idea. |
#5
|
||||
|
||||
Cita:
Cita:
Cita:
Cita:
Saludos. Última edición por escafandra fecha: 05-03-2017 a las 12:00:22. |
#6
|
||||
|
||||
Muchas gracias por toda la información. Sobre sockets en Windows encontré esto: http://www.programacionenc.net/index.php?option=com_content&view=article&id=73:sockets-en-windows&catid=37rogramacion-cc&Itemid=55
Tengo algunas dudas sobre el ejemplo que pones de sockets: - Por lo que he leído accept espera a que se conecte un cliente pero, si son por ejemplo 2 clientes ¿como seria? - Si cliente y servidor están en la misma máquina ¿se usaría AF_UNIX? Eso es lo que entendí. - ¿Cómo sería para que fuesen a sincrónicos? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Reproductor de Musica Uso de WM_COPYDATA | Arieloi2 | API de Windows | 1 | 28-05-2010 03:19:19 |
duda sobre dll | romanuel | C++ Builder | 5 | 26-02-2008 20:58:52 |
Una duda sobre ADO | PTW | Conexión con bases de datos | 1 | 13-04-2004 23:33:14 |
Duda sobre BDE vs IBX | ESA | Firebird e Interbase | 3 | 04-03-2004 17:20:07 |
Duda sobre ADO | Omar Alejandro | Conexión con bases de datos | 7 | 31-05-2003 19:52:58 |
|