在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窗体间发送消息或字符串的更多相关文章

  1. C#实现在应用程序间发送消息的方法示例

    本文实例讲述了C#实现在应用程序间发送消息的方法.分享给大家供大家参考,具体如下: 首先建立两个C#应用程序项目. 第一个项目包含一个Windows Form(Form1),在Form1上有一个But ...

  2. Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)

    keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主 ...

  3. linux上 用户间发送消息 通信

    联想:scp命令 1.使用write命令,向指定用户发送信息:           用户可以使用write命令给其他在线用户发送消息.格式: $ write zhangsan hello   worl ...

  4. 微信通过openID发送消息/后台post、get提交并接收数据 C# .NET 配置404,500等错误信息 连接字符串

    微信通过openID发送消息/后台post.get提交并接收数据   控制器:下面是post发送消息(微信不支持从前台发送数据,之前试过,报错,需要跨域,跨域的问题解决后还不行,最后发现之后后端提交 ...

  5. 微信通过openID发送消息/后台post、get提交并接收数据

    控制器:下面是post发送消息(微信不支持从前台发送数据,之前试过,报错,需要跨域,跨域的问题解决后还不行,最后发现之后后端提交 WXApi类: #region 验证Token是否过期 /// < ...

  6. Delphi实现获取句柄并发送消息的方法(FindWindow、FindWindowEx、EnumChildWindows、SendMessage)

    Delphi实现获取句柄并发送消息的方法 本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil, ...

  7. 【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 ...

  8. springboot使用RestTemplate以post方式发送json字符串参数(以向钉钉机器人发送消息为例)

    使用springboot之前,我们发送http消息是这么实现的 我们用了一个过时的类,虽然感觉有些不爽,但是出于一些原因,一直也没有做处理,最近公司项目框架改为了springboot,springbo ...

  9. 深入delphi编程理解之消息(二)发送消息函数及消息编号、消息结构体的理解

    一.delphi发送消息的函数主要有以下三个: (一).SendMessage函数,其原型如下: function SendMessage( hWnd: HWND; {目标句柄} Msg: UINT; ...

随机推荐

  1. day03 mysql外键 表的三种关系 单表查询 navicat

    day03 mysql navicat   一.完整性约束之     外键 foreign key     一个表(关联表: 是从表)设置了外键字段的值, 对应的是另一个表的一条记录(被关联表: 是主 ...

  2. 覆盖element ui 的样式

    我们可以使用 !important  来覆盖element ui 的样式 首先先在浏览器中找到 我们所要修改的样式 ,然后找到她的 class  重新写他的样式 ,例如 . app  { width ...

  3. 安装 Confluence6.7.1 笔记

    安装 Confluence6.7.1 我是使用命令行进入mysql的mysql -uroot -p123456 创建数据库 CREATE DATABASE confluence DEFAULT CHA ...

  4. shell 脚本定制与重定向

    脚本定制 . 或者 source: 读取文本文件并执行(在当前shell解释并执行) source ./ld 总用量 8 -rw-------. 1 root root 1223 10月 2 21:1 ...

  5. delphi RTL是什么?

    第一种解释: RTL Run-Time Library,支持程序运行执行的函数库.是运行时间库,在运行时需要.Delphi的RTL包括System,SysUtils,Math三个单元RTL提供的大部分 ...

  6. Go 算术运算符

    Go 算术运算符 package main import "fmt" func main() { var a int = 21 var b int = 10 var c int c ...

  7. http经典解析

    HTTP访问流程想象用浏览器打开imooc.com网站,HTTP走过的环节: 1.首先,是对imooc.com域名解析, (1.1)浏览器搜索浏览器自身的DNS缓存. (1.2)如果浏览器没有找到自身 ...

  8. NX二次开发-UFUN特征选择对话框UF_UI_select_feature

    #include <uf.h> #include <uf_ui.h> UF_initialize(); //特征选择对话框 char sMessage[] = "特征 ...

  9. NX二次开发-NXOPEN找相切面方法ScRuleFactory()->CreateRuleFaceTangent

    #include <uf_defs.h> #include <uf_ui_types.h> #include <iostream> #include <NXO ...

  10. [zz]使用OleDb,将Excel导入DataSet

    本方法,将传入的Excel文件内所有的Sheet内的数据都填充入DataSet中.这是一个简单快捷的方法,不足之处是不适合带有格式复杂的Excel文件.(比如:有合并单元格的) public clas ...