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);

  • 相关阅读:
    详解Codis安装与部署
    停车场地图开发
    dlib换脸
    海康相机官网硬触发设置
    python操作数据库
    心率和血氧测量
    音乐模块
    flask网页显示图片
    树莓派识别二维码
    树莓派python获取自身IP
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2378023.html
Copyright © 2011-2022 走看看