我自定义了一个消息,为啥收到的信息全是乱码???const
WM_MyRecord=WM_USER+230;Type
  TRCmessage=record
  Msg:Cardinal;
  Name:pchar;  // String
  Time:DWORD;
  Result:Longint;
end;
procedure TFMGETSN.WMMYRECORD(var Message:TRCmessage);
begin
messagebox(0,message.Name,0,0);//弹出来的都是乱码
end;其它程序发送时:
SendMessage(findwindow('TFMGETSN',nil),WM_USER+230,Integer(pchar('ff')),0);

解决方案 »

  1.   

    你在A进程中为字符串分配的内存地址,如果将这个地址发送给B进程,
    到B进程中,这个地址就是无意义的地址了。
    如果你想在两个进程中传递字符串,你可以用 WM_COPYDATA 消息(具体如何使用这个消息,你可以baidu下)。
    或者,你自己采用内存映射的方式也可以。
      

  2.   

    WM_SETTEXT这个消息是怎么做的啊?
      

  3.   

    跨进程的话你用WM_CopyData吧.
    Windows源代码中WM_CopyData,WM_SETTEXT都是在对方进程分配内存,写内存,拷贝数据,发消息.
    也就是virtualalloceex,writeprocessmemory,sendmessage,virtualfreeex这几个API.
      

  4.   

    嗯,问题出在Integer(pchar('ff'))这里,'ff'是B进程的资源串,Integer(pchar('ff'))是它的进程私有地址,A进程怎么可以访问呢
      

  5.   

    这样可以么:messagebox(string(Message.wParam));