IPC进程间通信+数据复制消息WM_COPYDATA

      
        IPC(Inter-Process Communication,进程间通信)。
        数据复制消息WM_COPYDATA是Windows中一个特殊的消息,通过这个消息能够在进程间传递数据。


       1.WM_COPYDATA:


        WM_COPYDATA消息含两个參数WPARAM
wParam和LPARAM  lParam。WPARAM和LPARAM是匈牙利命名法,历史更迭,WPARAM指32位整形变量,LPARAM指32为整形变量指针。发送WM_COPYDATA时,wParam赋值为发送此消息的窗体。lParam则指向一个COPYDATASTRUCT结构
:
       typedef
struct{
                ULONG_PTR
  dwData;
                DWOED   cdData;
                PVOID   lpData;
        };
        该结构体中。dwData能够使随意值,lpData是须要发送给窗体所在进程的数据地址,cbData是lpData发送数据的字节数。

       
在发送WM_COPYDATA消息时,系统会把COPYDATASTRUCT及lpData指向的内容发送给目标进程。目标进程接收到WM_COPYDATA消息后。能够从lParam參数中提取出数据。


         2.WM_COPYDATA发送端:


         创建窗体  ->   填充COPYDATASTRUCT   ->   SendMessage发送WM_COPYDATA数据。

         COPYDATASTRUCT cds;            //定义COPYDATASTRUCT变量
         
         SendMessage(
                  hwndto,
                                //目标窗体句柄
                 
(UINT)WM_COPYDATA,      //指定发送的数据
                 
(WPARAM)hwndfrom,         //将源窗体句柄做WPARAM參数
                 
(LPARAM)&cds                    //将COPYDATASTRUCT做LPARAM參数
         );


         3.WM_COPYDATA接收端:
        
         通过lPrama參数获取COPYDATASTRUCT  ->  从COPYDATASTRUCT中提取数据。
         COPYDATASTRUCT  *PointCds = (COPYDATASTRUCT *)lParam;
         PointCds->lpData则是传输的数据。
               
                4.牛刀小试:

        因为測试程序涉及到窗体创建。较为复杂,附上project文件:
        发送端:点击下载
        接收端:点击下载
       上诉程序编译环境均为VS 2012
       上诉程序參考了《精通 Windows API》一书。

【IPC进程间通信之四】数据复制消息WM_COPYDATA的更多相关文章

  1. Linux环境编程之IPC进程间通信(五):Posix消息队列1

    对于管道和FIFO来说.必须应该先有读取者存在.否则先有写入者是没有意义的. 而消息队列则不同,它是一个消息链表,有足够写权限的线程可往别的队列中放置消息,有足够读权限的线程可从队列中取走消息.每一个 ...

  2. Android开发之IPC进程间通信-AIDL介绍及实例解析

    一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...

  3. 进程间通信之信号量、消息队列、共享内存(system v的shm和mmap)+信号signal

    进程间通信方式有:System v unix提供3种进程间通信IPC:信号量.消息队列.共享内存.此外,传统方法:信号.管道.socket套接字. [注意上述6种方式只能用户层进程间通信.内核内部有类 ...

  4. 云区域(region),可用区(AZ),跨区域数据复制(Cross-region replication)与灾备(Disaster Recovery)(部分1)

    本文分两部分:部分1 和 部分2.部分1 介绍 AWS,部分2 介绍阿里云和OpenStack云. 1. AWS 1.1 AWS 地理组件概况 AWS 提供三种地理性组件: Regions:区域,即A ...

  5. Kafka学习笔记(3)----Kafka的数据复制(Replica)与Failover

    1. CAP理论 1.1 Cosistency(一致性) 通过某个节点的写操作结果对后面通过其他节点的读操作可见. 如果更新数据后,并发访问的情况下可立即感知该更新,称为强一致性 如果允许之后部分或全 ...

  6. 万字详解 TDengine 2.0 数据复制模块设计

    ​导读:TDengine分布式集群功能已经开源,集群功能中最重要的一个模块是数据复制(replication),现将该模块的设计分享出来,供大家参考.欢迎大家对着设计文档和GitHub上的源代码一起看 ...

  7. ODAC (V9.5.15) 学习笔记(二十一)数据复制

    用TVirtualTable在内存中缓存TOraQuery中的数据,主要应用场景是参照其他数据,需要将TOraQuery中的数据复制到TVirtualTable,由于没有类似于TClientDataS ...

  8. SQL把表中的数据复制到另一个数据库中

    1 删除整张表的数据,并还原自增长值TRUNCATE TABLE TbWeixinActivity 2 3张表左连接select a.ID,c.Name,b.nickname,a.CreateDate ...

  9. docker 数据共享,数据复制

    docker 提供的数据共享的方式有 docker   run  -it  -v:/dataname  image 数据复制使用 docker  cp  containerid:/dataname   ...

随机推荐

  1. css3的一些属性

    以前还没有注意过css的一些属性,近期发现有一些样式很好用,现在整理一遍. CSS3 动画属性 @keyframes : 规定动画 可以通过keyframes 改变一个块的样式当然这是要配合anima ...

  2. css3选择器的比较(三) -- 元素选择器 (+, ~)

    元素选择器中w3cschool中有些翻译不太准确 比如 +:其实是与element1元素同级,位于element1元素之后的第一个element2元素 ~:其实是与element1元素同级,位于ele ...

  3. Img垂直居中

    IMG垂直居中问题 2011-02-22 10:51:00|  分类: CSS |  标签:垂直居中  div  align  img  vertical  |举报|字号 订阅    转载来自:htt ...

  4. ##DAY1 UI、frame、center、bounds、UIVIew

    ##DAY1 UI.frame.center.bounds.UIVIew #pragma mark ———————UI——————————— UI的本意是用户界面,是英文User和 Interface ...

  5. RAW模板开发必备知识

    写这个主要是为了让已经熟练掌握PHP的人能够快速的掌握RAW模板开发,从而享受RAW的优越! (注:在实际开发中,最好注意RAW模板开发统一规范,那样可以增强用户体验) 废话不多说,进入正题. 需要记 ...

  6. 高质量程序设计指南C/C++语言——C++/C常量(2)

  7. angulajs 当input使用 bootstrap的email类型时,如果是无效的email格式,则ng-model无效的情况

    当使用bootstrap的如下input时 <input type="email" ng-model="userid"> 如果输入的内容是无效的em ...

  8. lightoj Again Array Queries

    1100 - Again Array Queries   PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 ...

  9. [ACM] POJ 3273 Monthly Expense (二分解决最小化最大值)

    Monthly Expense Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14158   Accepted: 5697 ...

  10. Java自定义简单标签

     Java自定义简单标签可以方便的在页面输出信息,并且对于权限的控制,和对于Jsp标签和servlet代码的分离有着很好的作用. 下面将以权限的控制为例自定义一个标签: 一.标签类型 <wxt: ...