您的位置:程序门 -> delphi -> windows sdk/api



用sendmessage()怎么传字符串到事件并还原出来?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


用sendmessage()怎么传字符串到事件并还原出来?[已结贴,结贴人:c2one]
发表于:2008-01-10 17:26:27 楼主
用sendmessage()怎么传字符串到事件并还原出来?

sendmessage(shared^.module,   my_msg,   0,   integer(tlqqchat));
*****************   事件   *********
procedure   tform1.mymessagemsg(var   msg:tmessage);
begin
        form1.label1.caption   :=   string(msg.lparam);
end;

这样不行啊,因该怎么弄?
发表于:2008-01-10 18:01:541楼 得分:0
string类型是个自动控制的字符动态数组,内存地址是不可靠的,用pchar类型或者array[]   of   char数组取地址
发表于:2008-01-10 19:31:222楼 得分:0
sendmessage(shared^.module,       my_msg,       0,       integer(tlqqchat));
*****************       事件       *********  
procedure       tform1.mymessagemsg(var       msg:tmessage);  
begin  
                form1.label1.caption       :=       string(msg.lparam);  
end;    
====================
sendmessage(shared^.module,       my_msg,       0,       integer(@tlqqchat));
*****************       事件       *********  
procedure       tform1.mymessagemsg(var       msg:tmessage);  
begin  
                form1.label1.caption       :=       pstring(msg.lparam)^;  
end;  
 
发表于:2008-01-10 19:32:563楼 得分:0
要注意的是,不可以跨进程(最好也不要跨线程)。可能跨线程的时候,建议接收方进行一次复制。另外只可以在sendmessage当中使用,不可以用于postmessage.
发表于:2008-01-10 21:47:304楼 得分:0
type
    aaa=   record
        bbb:   string
    end;

传递结构体的指针应该可以
发表于:2008-01-10 21:48:545楼 得分:10
用wm_copydata就可以实现进程间数据共享
发表于:2008-01-11 09:40:436楼 得分:0
谢谢各位,因为涉及到不同进程的操作,所以unsigned的方法使用中会读内存越界,
采用xiezhenghai的方案可行


快速检索

最新资讯
热门点击