本帖最后由 fbiboss 于 2014-11-11 22:14:06 编辑

解决方案 »

  1.   

    看接收端的代码,发送端应当发送字节流,这样的:
    var
      buf:array [0..1023] of byte;
      t:tagCOPYDATASTRUCT;
    begin
      t.dwData := 0;
      t.cbData := 1024;
      t.lpData := @buf[0];
      SendMessage(目标窗口句柄, WM_COPYDATA, 本窗口句柄, Integer(@t));
    end;
    不能直接t.lpData := stream
      

  2.   

    怎么把stream转成字节流啊?
    以前我是自己想象弄的,发送端弄成这样了,
       stream:=TMemoryStream.Create;
          cdds.dwData := 0;
          cdds.cbData := stream.size;//;
          stream.Position:=0;
          cdds.lpData := stream.Memory;
      

  3.   

    WM_CopyData只能发送小规模的数据,大规模数据,用这个发有问题的!所以说你说的发送流,还是看流内容的规模,如果数据不大,可以的,比较大的话,建议用内存映射或者管道或者Socket等