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;
  • 相关阅读:
    Docker基本命令及工作原理
    Docker安装
    linux命令
    MTPuTTy使用
    SpringBoot--swagger搭建、配置及使用
    idea使用技巧
    Idea插件
    IDEA开发工具使用 git 创建项目、拉取分支、合并分支
    git命令
    javbus爬虫-老司机你值得拥有
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254609.html
Copyright © 2011-2022 走看看