zoukankan      html  css  js  c++  java
  • 消息发送字符串

    其实不论什么方法,归根揭底都是通过传递对象的指针来达到效果的。

    方法一:

    procedure SendString(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;

    procedure WMCopyData(var MSG: TMessage); message WM_COPYDATA;

    procedure TForm1.WMCopyData(var MSG: TMessage);
    var
      Data  : ^tagCOPYDATASTRUCT;
      strMSG: string;
    begin
      Data:= Pointer(Msg.lParam);

      strMSG:= StrPas(Data.lpData);

      ShowMessage(strMSG);
    end;

    方法二:

    TMyRecord=record  s:string;  end;   

    tt:TMyRecord;

    var  tt:TMyRecord;  begin  tt.s:='s2343243';   PostMessage(handle,WM_My,integer(tt),5); end; 
    发送消息,由于参数只能是一个integer,你这样发只能发4个字节,所以要改成发指针,比如:
    var tt:TMyRecord; begin  tt.s:='s2343243';   PostMessage(handle,WM_My,integer(@tt),5); end; 
    接收的时候当然也不能用原来的方法:My:=TMyRecord(msg.WParam);这样取回来了,也要把TMyRecord声明成指针:

    type  PMyRecord=^TMyRecord; var  My:PMyRecord; my:=PMyRecord(msg.WParam);

    http://www.cnblogs.com/hnxxcxg/archive/2012/03/03/2378023.html

  • 相关阅读:
    springmvc源码分析上之HandlerMapping
    java web api接口调用
    centos6 hadoop2.7.3分布式搭建
    大话java基础知识一之为什么java的主函数入口必须是public static void
    jQuery引用
    windows 服务的卸载
    java 环境安装
    python matplotlib 折线图的制作
    python matplotlib 简单柱状图的制作
    python 安装库时 Failed building wheel for 错误处理
  • 原文地址:https://www.cnblogs.com/findumars/p/5236967.html
Copyright © 2011-2022 走看看