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 != )
{
byte[] sarr = System.Text.Encoding.Default.GetBytes(strData);
int len = sarr.Length + ;
COPYDATASTRUCT cds;
cds.dwData = (IntPtr);
cds.lpData = strData;
cds.cbData = len;
SendMessage(winHandler, WM_COPYDATA, , 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;
}
}

WinForm实现跨进程通信的方法的更多相关文章

  1. Android中的跨进程通信方法实例及特点分析(二):ContentProvider

    1.ContentProvider简单介绍 在Android中有些数据(如通讯录.音频.视频文件等)是要供非常多应用程序使用的.为了更好地对外提供数据.Android系统给我们提供了Content P ...

  2. Android中的跨进程通信方法实例及特点分析(一):AIDL Service

    转载请注明出处:http://blog.csdn.net/bettarwang/article/details/40947481 近期有一个需求就是往程序中增加大数据的採集点,可是由于我们的Andro ...

  3. AIDL跨进程通信

    Android跨进程通信会用到AIDL,当然跨进程通信不一定要用AIDL,像广播也是可以的,当然这里用到AIDL相对比较安全一些: AIDL允许传递基本数据类型(Java 的原生类型如int/long ...

  4. 【Chromium中文文档】跨进程通信 (IPC)

    跨进程通信 (IPC) 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/I ...

  5. 跨进程通信之Messenger

    1.简介 Messenger,顾名思义即为信使,通过它可以在不同进程中传递Message对象,通过在Message中放入我们需要的入局,就可以轻松实现数据的跨进程传递了.Messenger是一种轻量级 ...

  6. 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇

    前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...

  7. Android-Messenger跨进程通信

    http://blog.csdn.net/lmj623565791/article/details/47017485 一.概述 我们可以在客户端发送一个Message给服务端,在服务端的handler ...

  8. 图文详解 Android Binder跨进程通信机制 原理

    图文详解 Android Binder跨进程通信机制 原理 目录 目录 1. Binder到底是什么? 中文即 粘合剂,意思为粘合了两个不同的进程 网上有很多对Binder的定义,但都说不清楚:Bin ...

  9. linux 单机跨进程通信

    一般来说通过网络通信(比如tcp,udp)或者共享内存的方式肯定可以实现跨进程通信,但现在这里要说的是比较偏但实用的几个方法:利用unix域通信(普通网络连接),利用unix域通信(socketpai ...

随机推荐

  1. Hadoop构成

    What Is Apache Hadoop? The Apache™ Hadoop® project develops open-source software for reliable, scala ...

  2. tinyxml2简单使用

    引入头文件 <span style="font-size:18px;">#include "HelloWorldScene.h" #include ...

  3. MYSQL数据库性能调优之六:备份

    增量备份

  4. 安装glibc2.7

    参考链接http://fhqdddddd.blog.163.com/blog/static/18699154201401722649441/ /lib/libc.so.6: version `glib ...

  5. Failed to load libGL.so in android

    使用命令:find / -name libGL.so 得到: /usr/lib/i386-linux-gnu/libGL.so /usr/lib/i386-linux-gnu/mesa/libGL.s ...

  6. csu oj 1804: 有向无环图 (dfs回溯)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1804 中文题意就不说了. dfs从底到根回溯即可,看代码应该能清楚. //#pragma ...

  7. UVaLive 7512 November 11th (思维漏洞)

    题意:给定n*m个座椅,然后有b个是坏的,要做人,并且两个人不能相邻,问你最多坐多少人,最少坐多少人. 析:这个题其实并不难,只要当时一时没想清楚,结果就一直WA,就是最少的情况时,其实一个人可以占三 ...

  8. js get 传参 汉字 乱码问题

    js encodeURI(encodeURI(searchWord)) java URLDecoder.decode(searchWord,"utf-8")

  9. sql2008来远程访问sql2005数据库服务器

    今天搞了一个下午终于搞定了数据库的远程访问.其基本步骤如下: sql2008的配置: sql server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上 ...

  10. 自定义滚动控件(Pagecontrol)

    // // MyPageCorol.h // lejiahui // // Created by iOS开发 on 16/4/10. // Copyright © 2016年 zhongmingwuy ...