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);
///
/// 发送消息
///
///接收方窗体标题名称
///要发送的数据
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);
}
}
///
/// 接收消息
///
///
/// 在窗体中覆盖接收消息函数
/// 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;
///
/// }
/// }
///
///
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#程序设计有所帮助。
同类资源
- 上位机通信的RFID签到
上位机通信的RFID签到例子源代码,下位机采用基于Arduino开发板。...
- E4A易语言服务器分包互动通信
E4A易语言服务器分包互动通信例子源代码,服务器用的是E4A专用的易语言异步服务器。...
- 跨进程通讯,数据传输,命名管道
跨进程通讯,数据传输,命名管道例子源代码,管道通信通常用于跨进程间的数据传输。...
- 基于simulink的直序扩频通信系统仿真,报告文档和仿真程序
基于simulink的直序扩频通信系统仿真,报告文档和仿真程序本文件感兴趣的可以参考一下,基于simulink的直序扩...
- 基于simulink直接序列扩频通信
基于simulink直接序列扩频通信本文件感兴趣的可以参考一下,写得很详细,非常不错的东西。...
- 窗口信息工具箱Winformation v1.0.8
窗口信息工具箱Winformationv1.0.8绿色版,如果不将按钮拖到其它窗口上,提示是否恢复到桌面,以便将之前改变过...
- Winform可视化编辑打印模板,指定模板选择打印机打印
Winform可视化编辑打印模板,指定模板选择打印机打印,json格式自定义模板本文件感兴趣的可以参考一下,自定义...
- 内存进程通信,调用别的子程序
易语言内存进程通信,调用别的子程序例子源代码,有需要可以下载学习一下,调用别的程序的子程序。...
- 基于Matlab的OFDM通信系统仿真
基于Matlab的OFDM通信系统仿真本文件感兴趣的可以参考一下,这是一个基于Matlab的OFDM仿真实验报告和程序。...
- MiniBox加密通信软件
MiniBox加密通信软件,点击时间进行加密或解密,第一次使用需设定PIN码,第一次运行会询问是否添加开机启动。...
- 高效通信模块IOCP完成端口框架,纯E类引用
易语言高效通信模块IOCP完成端口框架,纯E类引用例子源代码,此模块是为了迎合广大E用户没有好用的通信模块而...
- WinForm在PictrueBox控件上建立矩形选框裁剪图片
WinForm在PictrueBox控件上建立矩形选框裁剪图片本文件感兴趣的可以参考一下,学会了操作的基本步骤。...