rt,这两个方法每次能发送的最大数据长度是多少?

解决方案 »

  1.   

    消息长度的准确含义?sizeof(WPARAM),sizeof(LPARAM) =4但是通过强制类型转换的数据,其长度没有限制?
      

  2.   

    你是指参数能有多长?LPARAM跟WPARAM都是32位
      

  3.   

    晕,3M和5M太没有边界性了,你应该用2^N-1
      

  4.   

    我是跨进程传的.这个应该是通过windows内部机制进行数据传递的,所以和一般的传递指针或者直接值数据不同吧?难道没有限制?
      

  5.   

    楼上wltg2001(红猪)朋友的看法不无道理,可能系统中不需要手工响应的消息有这个限制(有时间再认真验证一下,先Mark)。楼主试试WM_COPYDATA消息,我没试过这个有无大小限制。
      

  6.   

    两个 unsigned long 类型
      

  7.   

    Snow_Ice11111(雪上加冰--求职ing在厦门) :我就是用WM_COPYDATA消息的。不好意思,我开始没有说清楚。
      

  8.   

    跨进程的数据通讯不能用消息传送,你可以选择以下四种方法之一:1.DDE (磁盘数据交换)
    2.OLE
    3.管道通讯
    4.邮槽通讯最简单的方法还是DDE ,内存映射文件,使用方法:
    1.调用CreateFile(......);     创建文件,可在最后一参数指定句柄名称
    2.调用CreateFileMapping(...); 创建内存映射文件,权限设置成为可继承共享形式
    3.调用MapViewOfFile(...);     将文件内容映射到内存
    ------------------------
    4.另一进程调用OpenHandle打开上一进程指定的文件句柄名称,就可以通过这个句柄共享这个文件内容了如果不想共享文件的内容,也可以使用进程分段共享的方式(只适用同一进程多实例间)
    具体方法:
    1. 定义共享段
    #pragma data_seg(myseg)
    valatile int g_a = 10;
    #pragma ()2.设置段访问权限
    #pragma comment(linker,"/section:myseg,rws")     //指定该段属性为读写共享3.这样的话该变量会完全共享在当前进程的多个实例间
      

  9.   

    参考
    http://dev.csdn.net/develop/article/15/15000.shtm
      

  10.   

    用管道吧,这是最优的解决方案,像foobar、winamp这类的软件都用这技术HANDLE CreateNamedPipe(
      LPCTSTR lpName,
      DWORD dwOpenMode,
      DWORD dwPipeMode,
      DWORD nMaxInstances,
      DWORD nOutBufferSize,
      DWORD nInBufferSize,
      DWORD nDefaultTimeOut,
      LPSECURITY_ATTRIBUTES lpSecurityAttributes
    );
      

  11.   

    楼上有人说跨进程不可以用消息,有个wm_cpoydate就可以的
      

  12.   

    wm_cpoydate这个消息很特殊,系统为这个消息作了特殊的处理.