读书人

通过发送消息来传递字符串接收方怎么

发布时间: 2012-02-24 16:30:39 作者: rapoo

通过发送消息来传递字符串,接收方如何获得字符串?

Delphi(Pascal) code
procedure TAAThread.Execute;var s:string;begin  s:='jkchjvb';  PostMessage(handle,WM_My,integer(s),6);end;


用这个发送字任串,发现字符串不能太长,否则出错。所以直接发指针

Delphi(Pascal) code
procedure TAAThread.Execute;var s:string;begin  s:='jkchjvb';  PostMessage(handle,WM_My,integer(@s),6);end;


那么现在我应该如何在接收方得到这个字符串呢?

[解决办法]
Delphi(Pascal) code
procedure TAAThread.Execute;var s:string;begin  s:='jkchjvb';  PostMessage(handle,WM_My,integer(s),6);end;
[解决办法]
Delphi(Pascal) code
procedure TForm1.OnSys(var msg: TMessage);  var pData : PChar;begin    pData := PChar(msg.lparam);  lst1.Items.Add(pData);end;procedure TForm1.btn1Click(Sender: TObject);  var pData : string;begin  pData := '测试测试测试';  PostMessage(Handle,WM_SYS,0,Integer(pData));end;
[解决办法]
这种情况,你需要在线程中动态开辟内存(虽然这样做不是很好,但是不会有错误)

Delphi(Pascal) code
//线程中:procedure TAAThread.Execute;var   p: Pointer;begin  GetMem(p, 7);  ZeroMemory(p, 7);  Move('jkchjvb', p^)  PostMessage(handle,WM_My,integer(p),6);end;//接收部分var  p: Pointer;begin  p := Pointer(msg.LParam);  self.mmoInfo.Lines.Add(String(p));  FreeMem(p); // 释放end; 

读书人网 >.NET

热点推荐