zoukankan      html  css  js  c++  java
  • delphi传递字符串信息 WM_COPYDATA  转

    delphi的消息机制里,我在一个窗口里通过发送消息(PostMessage)给另一个窗口,那怎么传递字符串信息呢?

    delphi的消息机制里,我在一个窗口里通过发送消息(PostMessage)给另一个窗口,那怎么传递字符串信息呢?

    必须使用sendMessage.
    sendmessage会等待接受消息完成后才继续执行,这样你的str才会被另一个窗口可靠接收。postmessage传递完消息立即返回,这样接收窗口就不一定完全接收当时传递的str.尤其是在局部变量的情况。

    而进程间的数据传递好像只有用wm_copydata消息,它可以跨进程拷贝内存。

     

     

     

     

    使用WM_COPYDATA传递.

    发送:  

    Delphi(Pascal) code

    procedureSendString(strMSG: string);
    var
       Data: tagCOPYDATASTRUCT;  
       pBuf: PChar;
    begin
     
    GetMem(pBuf, Length(strMSG) +1);  
    try    
         ZeroMemory(pBuf, Length(strMSG) +1);    
         StrPCopy(pBuf, strMSG);    
         Data.cbData:=Length(strMSG);    
          Data.dwData:=Length(strMSG);    
         Data.lpData:=pBuf;    
         SendMessage(hTargetWin, WM_COPYDATA, Integer(Self.Handle), Integer(@Data));  
    finally   
         FreeMem(pBuf);  
    end;
     
    end;



    接收:

    Delphi(Pascal) code

    procedureWMCopyData(varMSG: TMessage); message WM_COPYDATA;
     
    procedureTForm1.WMCopyData(varMSG: TMessage);
    var
       Data  ^tagCOPYDATASTRUCT;  
       strMSG: string;beginData:=Pointer(Msg.lParam);  
        strMSG:=StrPas(Data.lpData);  
        ShowMessage(strMSG);
    end;
  • 相关阅读:
    vue part1 基础
    【转载】NBU异机恢复oracle
    【转载】跨域请求
    [转载] django contenttypes
    rest_framework setting
    rest_framework 视图/路由/渲染器/认证授权/节流
    【转载整理】 mysql百万级数据库分页性能
    rest_framework 分页
    rest_framework 序列化
    django middleware
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254609.html
Copyright © 2011-2022 走看看