提示错误“access violation at address 004100cf in module 'project.exe.write of address 00000027'”

解决方案 »

  1.   

    VAR
      s: string;
      p: PChar;s := IntToStr(i);
    GetMem(p, Length(s) + 1);
    StrPCopy(p, s);
    ds.cbData := Length(s) + 1;
    ds.lpdata := p;...
    Sendmessage(h,WM_COPYDATA,handle,Cardinal(@ds));
      

  2.   

    谢谢chechy(我爱洁洁) 
    调试通过了,可你能解释一下为什么要这样吗?
      

  3.   

    public
    procedure Getdata(var Msg:TWmcopydata);message WM_COPYDATA;//得到数据
    …………
    procedure Tform1.Getdata(var Msg: TWmcopydata);
    begin
    TDstr:=StrPas(Msg.CopyDataStruct^.lpData);
    end;
    这是我另一个程序project1的接受消息的程序
    可好象不成功
      

  4.   

    procedure Receivemsg(var Message: TMessage) ; Message WM_COPYDATA;
    ..........
    (Message.LParam)^.dwData
    (Message.LParam)^.lpData
      

  5.   

    你发送的是Application的Handle,而不是Form1的Handle,所以Form1无法接收。
    需要Hook Application的Window Proc才能接收消息。
    建议好好读读D5DG的第五章。
      

  6.   

    你没有给ds.lpdata分配内存区域,可以使用Gemem分配内存,
    如:
    GetMem(ds.lpdata,Strlen(Pchar(inttostr(i)))+1);
    Strcopy(ds.lpdata,Pchar(inttostr(i)));
      

  7.   

    chechy(我爱洁洁) 
    我要是读懂了也就不来这里问了那上面写的大多是在一个程序内发送接受消息
    我要做的是在两个程序之间发送消息
    而且是第一个程序调用的第2个程序
    第2个程序只有一个exe