我自定义了一个消息,为啥收到的信息全是乱码???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);
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);
到B进程中,这个地址就是无意义的地址了。
如果你想在两个进程中传递字符串,你可以用 WM_COPYDATA 消息(具体如何使用这个消息,你可以baidu下)。
或者,你自己采用内存映射的方式也可以。
Windows源代码中WM_CopyData,WM_SETTEXT都是在对方进程分配内存,写内存,拷贝数据,发消息.
也就是virtualalloceex,writeprocessmemory,sendmessage,virtualfreeex这几个API.