Delphi窗体间发送消息或字符串
在Delphi 开发中,常常应用到窗体消息传递,以达成某种操作要求,以下列举一个应用的例子,供大家参考。
自定义过程/函数方法:
//发送字符串到指字句柄的窗口中 (接收窗体需用发送时的消息常量WM_COPYDATA)
procedure SendMessageData(AHandle: THandle; AStr: String);
var
sData: TCopyDataStruct;
begin
sData.cbData := Length(AStr) + 1;
//为传递的数据分配内存
GetMem(sData.lpData,sData.cbData );
try
StrCopy(sData.lpData,PChar(AStr));
//发送WM_COPYDATA消息
SendMessage(AHandle,WM_COPYDATA,0,Cardinal(@sData));
finally
FreeMem(sData.lpData); //释放资源
end;
end;
//发送消息到指字句柄的窗口中
procedure SendMyMessage(AHandle: THandle; aMsg:Word);
begin
SendMessage(AHandle,aMsg,0,0)
end;
//------------------
调用:
SendMessageData(TForm(FindGlobalComponent('FrmHint')).Handle,'ABC');
SendMyMessage(TForm(FindGlobalComponent('FrmHint')).Handle, WM_USER+1001);
'FrmHint' 是你想要接收消息的窗体的Name
//=================================
在接收的窗体中定义如下常量及过程
const
WM_MYDEFMSG = WM_USER+1001;
声明部分:
procedure WMCOPYDATA(var AMsg: TWmCopyData); message WM_COPYDATA;
procedure ReceiedFormMsg(var msg :TMsg); message WM_MYDEFMSG;
过程实体:
//接收发送的字符串,即预定消息WM_COPYDATA
procedure WMCOPYDATA(var AMsg: TWmCopyData);
var s : string;
begin
s := StrPas(AMsg.CopyDataStruct^.lpData);
//To do something
end;
//接收预定的消息
procedure ReceiedFormMsg(var msg: TMsg);
begin
//Make you want to do
end;
>>http://blog.csdn.net/webroad/archive/2009/03/04/3955998.aspx
Delphi窗体间发送消息或字符串的更多相关文章
- C#实现在应用程序间发送消息的方法示例
本文实例讲述了C#实现在应用程序间发送消息的方法.分享给大家供大家参考,具体如下: 首先建立两个C#应用程序项目. 第一个项目包含一个Windows Form(Form1),在Form1上有一个But ...
- Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)
keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...
- linux上 用户间发送消息 通信
联想:scp命令 1.使用write命令,向指定用户发送信息: 用户可以使用write命令给其他在线用户发送消息.格式: $ write zhangsan hello worl ...
- 微信通过openID发送消息/后台post、get提交并接收数据 C# .NET 配置404,500等错误信息 连接字符串
微信通过openID发送消息/后台post.get提交并接收数据 控制器:下面是post发送消息(微信不支持从前台发送数据,之前试过,报错,需要跨域,跨域的问题解决后还不行,最后发现之后后端提交 ...
- 微信通过openID发送消息/后台post、get提交并接收数据
控制器:下面是post发送消息(微信不支持从前台发送数据,之前试过,报错,需要跨域,跨域的问题解决后还不行,最后发现之后后端提交 WXApi类: #region 验证Token是否过期 /// < ...
- Delphi实现获取句柄并发送消息的方法(FindWindow、FindWindowEx、EnumChildWindows、SendMessage)
Delphi实现获取句柄并发送消息的方法 本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil, ...
- 【C#】无损转换Image为Icon 【C#】组件发布:MessageTip,轻快型消息提示窗 【C#】给无窗口的进程发送消息 【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体 【手记】调用Process.EnterDebugMode引发异常:并非所有引用的特权或组都分配给呼叫方 【C#】DataRowState演变备忘
[C#]无损转换Image为Icon 如题,市面上常见的方法是: var handle = bmp.GetHicon(); //得到图标句柄 return Icon.FromHandle(handle ...
- springboot使用RestTemplate以post方式发送json字符串参数(以向钉钉机器人发送消息为例)
使用springboot之前,我们发送http消息是这么实现的 我们用了一个过时的类,虽然感觉有些不爽,但是出于一些原因,一直也没有做处理,最近公司项目框架改为了springboot,springbo ...
- 深入delphi编程理解之消息(二)发送消息函数及消息编号、消息结构体的理解
一.delphi发送消息的函数主要有以下三个: (一).SendMessage函数,其原型如下: function SendMessage( hWnd: HWND; {目标句柄} Msg: UINT; ...
随机推荐
- 项目中UX设计1到2的设计提升总结
- spring_入门配置和注入
Spring的获取容器: public static void main(String[] args) { //获取核心容器 BeanFactory延迟加载对象 ApplicationContext ...
- 完美编译街机模拟器MAME(Android版)基于MAME4all
重新编译MAME4droid源码 github上开源项目MAME4all可将MAME模拟器运行在iOS和Android上,还有一个比较有名的叫MAME4droid(MAME for android), ...
- Unity3d -- Collider(碰撞器与触发器)
(2d与3d的Collider可以相互存在,但是无法相互协作,如2d是无法检测3d的,反之,一样) 在目前掌握的情况分析,在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体.2.接收碰撞的物体. ...
- 启动eclipse出现JVM terminated. Exit code=127 错误解决办法
https://blog.csdn.net/wpzsidis/article/details/72954387 进去第二次又错
- strcmp 的坑
根据百度百科的:http://baike.baidu.com/view/1026924.htm 函数简介 原型:extern int strcmp(const char *s1,const char ...
- bzoj1013题解
[解题思路] 初看以为是二次方程组,但这些方程有相同的右值r2,于是可以化为一次方程组,高斯消元即可.复杂度O(n3). 化简过程: 假设第i个方程和第j个方程联立,得: ∑(a[i,k]-a[0, ...
- 树状数组优化dp——cf985E经典
/* dp[i]=0|1 表示前i是否可以被成功分组, dp[i+1]能够变成1的三个条件 1:j∈[0,i-k]里存在dp[j]=1 2:dp[j]=1 3:a[i+1]-a[j+1]<=d ...
- 笨办法学Python记录--习题1-11
20140412(习题1-10),和打印较劲: 1. 读这本书时没有按照要求安装Python2,我选择的是最新版3.4.0(官方release),然后悲剧发现完全不兼容,现在摘录2,3区别: 这个星期 ...
- 牛客多校第九场 E All men are brothers 并查集/组合论
题意: 一开始有n人互不认识,每回合有两个人认识,认识具有传递性,也就是相互认识的人组成小团体.现在问你每个回合,挑选四个人,这四个人互不认识,有多少种挑选方法. 题解: 认识不认识用并查集维护即可, ...