WinForm实现跨进程通信的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm实现跨进程通信的方法相关的知识,希望对你有一定的参考价值。
本文实例展示了WinForm实现跨进程通信的方法,分享给大家供大家参考之用。具体方法如下:
主要功能代码如下:
public class WinMessageHelper { private struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; } //使用COPYDATA进行跨进程通信 public const int WM_COPYDATA = 0x004A; [DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage( int hWnd, // handle to destination window int Msg, // message int wParam, // first message parameter ref COPYDATASTRUCT lParam // second message parameter ); [DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern int FindWindow(string lpClassName, string lpWindowName); /// <summary> /// 发送消息 /// </summary> /// <param name="windowReceiveTitle">接收方窗体标题名称</param> /// <param name="strData">要发送的数据</param> public static void Send(string windowReceiveTitle, string strData) { int winHandler = FindWindow(null,windowReceiveTitle); if (winHandler != 0) { byte[] sarr = System.Text.Encoding.Default.GetBytes(strData); int len = sarr.Length + 1; COPYDATASTRUCT cds; cds.dwData = (IntPtr)100; cds.lpData = strData; cds.cbData = len; SendMessage(winHandler, WM_COPYDATA, 0, ref cds); } } /// <summary> /// 接收消息 /// </summary> /// <example> /// 在窗体中覆盖接收消息函数 /// protected override void DefWndProc(ref System.Windows.Forms.Message m) /// { /// switch(m.Msg) /// { /// case WinMessageHelper.WM_COPYDATA: /// string str = WinMessageHelper.Receive(ref m); /// break; /// default: /// base.DefWndProc(ref m); /// break; /// /// } /// } /// </example> /// <returns>接收的到数据</returns> public static string Receive(ref System.Windows.Forms.Message m) { COPYDATASTRUCT cds = new COPYDATASTRUCT(); Type cdsType = cds.GetType(); cds = (COPYDATASTRUCT)m.GetLParam(cdsType); return cds.lpData; } }
希望本文所述实例对大家C#程序设计有所帮助。
除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
WinForm实现跨进程通信的方法
本文地址: http://www.paobuke.com/develop/c-develop/pbk23590.html
WinForm实现跨进程通信的方法
本文地址: http://www.paobuke.com/develop/c-develop/pbk23590.html
相关内容
详解C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用
C#的泛型方法解析
C#简易图片格式转换器实现方法
C#实现TCP连接信息统计的方法
C#实现页面GZip或Deflate压缩的方法
C# yield在WCF中的错误使用(二)
C#中委托的+=和-=深入研究
C#实现左截取和右截取字符串实例
以上是关于WinForm实现跨进程通信的方法的主要内容,如果未能解决你的问题,请参考以下文章