Winform跨程序发送、接收消息
2016-07-16 16:39
387 查看
看到论坛上一个问题:程序已经在运行,再次运行时,要向前一个实例发送一些消息。
简单的写了一些,直接贴代码!
1、封装了一个类,用于发送信息
2、在MainForm里override了WndProc,用于接收消息
简单的写了一些,直接贴代码!
1、封装了一个类,用于发送信息
class Note { [DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref CopyData lParam); [DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); //定义消息常数 public const int WM_COPYDATA = 0x004A; public struct CopyData { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string lpData; } public static bool SendMsg(string MSG) { var hwnd = FindWindow(null, "MainForm"); if (hwnd == IntPtr.Zero) { return false; } CopyData data; data.dwData = IntPtr.Zero; data.lpData = MSG; data.cbData = Encoding.Default.GetBytes(data.lpData).Length + 1; SendMessage(hwnd, WM_COPYDATA, 0, ref data); return true; } }
2、在MainForm里override了WndProc,用于接收消息
protected override void WndProc(ref Message m) { if (m.Msg == Note.WM_COPYDATA) { string s = ((Note.CopyData)Marshal.PtrToStructure(m.LParam, typeof(Note.CopyData))).lpData; MessageBox.Show(s); } else base.WndProc(ref m); }
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- winform绑定快捷键的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- 学习Winform文本类控件(Label、Button、TextBox)
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法