Cómo utilizar .NET para implementar la comunicación entre procesos
1) *** Acceso a la memoria
Incluye: archivos mapeados en memoria, *** DLL para acceder a la memoria y el portapapeles.
2) Canalizaciones con nombre y canalizaciones anónimas
3) Comunicación de mensajes
4) Uso de métodos proxy. Por ejemplo, SOCKET, archivos de configuración, métodos de registro.
Hay otras formas.
Método 1: Comunicación.
Existen muchos métodos de comunicación entre procesos. Los métodos más utilizados incluyen memoria compartida (archivos mapeados en memoria, DLL de memoria compartida, portapapeles, etc.), canalizaciones con nombre y canalizaciones anónimas, envío de mensajes, etc. se puede lograr directa o indirectamente a través de puertos de socket, archivos de configuración y registros. Cada uno de estos métodos tiene ventajas y desventajas. Específicamente, cuando se intercambian grandes cantidades de datos rápidamente entre procesos, se puede excluir el uso de archivos de configuración y registros, además, el uso de tuberías y sockets requiere el soporte de una tarjeta de red; no se puede considerar. Por tanto, las únicas opciones de comunicación que quedan son disfrutar del recuerdo y enviar mensajes.
2. Preparativos antes de enviar mensajes para lograr la comunicación entre procesos
El siguiente ejemplo utiliza la función API 32 de Windows
[DllImport("User32.dll" , EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr wnd, int msg, IntPtr wP, IntPtr lP);
Para tener esta función necesitas agregar usando System.Runtime.InteropServices; namespace
Los diversos parámetros de este método indican el significado de cada parámetro de este método
wnd: el identificador de la ventana que recibe el mensaje. Si este parámetro es HWND_BROADCAST, los mensajes se envían a todas las ventanas de nivel superior del sistema, incluidas las ventanas que no son de propiedad no válidas o invisibles, las ventanas sobrecargadas y las ventanas emergentes, pero los mensajes no se envían a las ventanas secundarias.
msg: Especifica el tipo de mensaje enviado.
wP: Contenido informativo.
lP: Especificar información adicional especificando información.
Al utilizar el manual de referencia de la API para ver el uso de SendMessage, el manual de referencia recomienda
La diferencia entre SendMessage y PostMessage: aunque las funciones de las dos funciones SendMessage y PostMessage son muy similar, ambos son responsables de enviar mensajes a la ventana especificada, pero después de que la función SendMessage () envía el mensaje, el valor de retorno no se puede obtener hasta que la función de respuesta del mensaje del receptor regrese para su procesamiento. Durante este período, el programa del remitente se bloqueará. Después de la declaración SendMessage () No puede continuar ejecutándose, lo que significa que este método es sincrónico. La función PostMessage () regresa inmediatamente después de enviar el mensaje, y luego la declaración se puede ejecutar inmediatamente, pero no se puede obtener el valor de retorno del procesamiento del mensaje del receptor, es decir, este método es asincrónico.
3. Pasos específicos para enviar mensajes para lograr la comunicación entre procesos
Para obtener más detalles, consulte: /wlanye/article/details/8552150