消息发送字符串

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

方法一:

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

时间: 2024-07-29 06:08:45

消息发送字符串的相关文章

cocos2dx 消息发送与接收

     cocos2dx有个自定义事件可以实现消息的发送和接收,叫EventListenerCustom.它是通过一个字符串来标识事件名称的.下面介绍下,我实现的这个消息的发送和接收.      首先,我们定义2个类,一个消息接收类,一个消息发送类.代码如下:       //消息接收 class cMsgReceiver { public: virtual void RecMsg(int iMsgId, void* pInfo, int iSize) { } }; //消息发送 class

Unity 消息发送机制 解析

该博客,只为解析,解析,解析,已经整理好,已经整理好,已经整理好.代码核心原理套用网上最流行的那一套,也是最常用游戏开发适用的消息机制.这里面加上自己的一些优化,极大的修正(哈哈),实测,没问题.万一要是出现问题,欢迎童鞋可以留言给我修正. 有童鞋可能会好奇,unity里面不是有自己的一套消息发送, 例如什么SendMessage,这...这个几乎是不能用的. 为啥不能用,看看以下是网上给的解释,自己玩玩demo还是可以用,但是实际开发,是几乎不能用的. I:它实现的是一种伪监听者模式,利用的是

runtime - 消息发送(objc_msgSend)

http://www.jianshu.com/p/95c8cb186673 在OC中,我们对方法的调用都会被转换成内部的消息发送执行对objc_msgSend方法的调用,掌握好消息发送,可以让我们在编程中更方便灵活. 首先来看下方法定义: /** 定义:'为某个类对象发送消息,并且返回一个值' 参数1: 消息接收的对象实例 参数2: 要执行的方法 ...: 一系列其他参数 */ id objc_msgSend(id self, SEL op, ...) 这里有官方文档的解释 我们创建一个Mess

Oracle触发器如何调用Java实现Openfire消息发送

写在前面,要想实现整个过程的成功执行请先准备以下文件: 1. 登陆Openfire服务端以及Spark客户端相关程序(openfire_4_0_1.exe.spark_2_7_6.exe) 2. 连接Openfire和Oracle相关的jar包(presence.jar.smack.jar.smackx-debug.jar.smackx.jar.ojdbc.jar)  Step1:安装Openfire服务端并配置数据库连接,配置参考<Openfire服务器安装与配置教程> Step2:在Ecl

TeamTalk Android代码分析(业务流程篇)---消息发送和接收的整体逻辑说明

第一次纪录东西,也没有特别的顺序,想到哪里就随手画了一下,后续会继续整理- 6.2消息页面动作流程 6.2.1 消息页面初始化的总体思路 1.页面数据的填充更新直接由页面主线程从本地数据库请求 2.数据库数据的填充由后台线程异步方式从网络请求 3.前台线程每次按照18条记录读取数据库数据,后台线程按照每次18*3从网络请求数据 4.后台线程数据的请求由主线程满足一定的条件后发送总线事件,在 oneventbackgroudthread 中处理,具体条件(或的关系)如下: 1>第一次请求 2>本

无线模块数据加密,反码校验,发送字符串&quot;ABCDEFGHIJKLMNOP&quot; LED频闪

[原帖必看,不然你看不懂本帖] 单片机编码 无线模块发送与接收 程序 [说明]:                        [发送端]: LED亮灭跟随发送状态 发送字符串"ABCDEFGHIJKLMNOP" 发送过程,用"春哥"的GBK码对字符串异或运算加密 数据校验:采用反码校验,先发送源码,再发送反码,抗干扰 [接收端] 接收加密的源码,用"春哥"的GBK码对字符串异或运算解密,得到源码 接收反码,反码与源码比较 接收字符串 判断字符串

C#实现QQ消息发送工具

.Net WinForm程序,实现的QQ消息发送,必须是QQ好友 可用于营销软件,QQ消息群发 软件核心模块,

Unity内置的三套消息发送机制的应用实例

转自http://blog.sina.com.cn/s/blog_1491e52310102wuf6.html 代码简介 : [1] 实例中包含2个类文件, SendMessage.cs 和 ReceiveMessage.cs , 分别为消息发送端和消息接收端. [2] Unity内置的消息发送系统有一个很特别的地方 - 即使接收端的方法类型为 private 或者 protected, 也能够收到信息. [3] Unity内置了3套消息机制,它们分别为 1. SendMessage() 向自己

msgX消息发送增强工具[下载]

熟悉命令行工具msg的人都知道,它发送的消息只能单行显示,如果你希望以多行的形式来显示消息是不行的.经过几天时间研究,我开发了一个增强版的消息发送工具msgX,它仍是以msg为基础,只要能用msg的地方就能使用msgX,使用方法也基本相同.下面是msgX的源代码,如有问题欢迎各位大虾指正. ::Based on MSG.EXE ::Designed By Computer Studio Of Zhou Zhou On 2016.7.7 @echo off if "%1"=="