delphi处理消息的几种方式
第一种:自定义处理单条消息
- unit Unit2;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs;
- type
- TForm2 = class(TForm)
- procedure FormCreate(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- private
- { Private declarations }
- //直接用 TWMQueryEndSession
- procedure EndMsg(var nMsg: TWMQueryEndSession); Message WM_QUERYENDSESSION;
- //也可以用这种
- //procedure EndMsg(var nMsg: TMessage); Message WM_QUERYENDSESSION;
- public
- { Public declarations }
- end;
- var
- Form2: TForm2;
- implementation
- {$R *.dfm}
- //收到WM_QUERYENDSESSION消息后就会触发这个过程
- procedure TForm2.EndMsg(var nMsg: TWMQueryEndSession);
- begin
- //0 可以取消关机操作
- nMsg.Result := 1;
- ShowMessage('注销、重启、关机');
- end;
- end.
第二种:利用Application.OnMessage处理消息
- unit Unit2;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs;
- type
- TForm2 = class(TForm)
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure OnMsg(var nMsg: tagMSG; var nHandled: Boolean);
- end;
- var
- Form2: TForm2;
- implementation
- {$R *.dfm}
- //消息处理过程
- procedure TForm2.OnMsg(var nMsg: tagMSG; var nHandled: Boolean);
- begin
- //处理……
- //这里会收到各种消息……经测试无法收到WM_QUERYENDSESSION消息
- end;
- procedure TForm2.FormCreate(Sender: TObject);
- begin
- Application.OnMessage := OnMsg;
- end;
- end.
第三种:自己处理窗口函数,个人感觉这是最强大的,可以拦截一切发往窗口的消息!
- unit Unit2;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs;
- type
- TForm2 = class(TForm)
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure WndProc(var nMsg: TMessage); override;
- end;
- var
- Form2: TForm2;
- implementation
- {$R *.dfm}
- procedure TForm2.WndProc(var nMsg: TMessage);
- begin
- //这里能收到发往窗口的所有消息
- inherited; // 注意这句不能少
- if nMsg.Msg = WM_QUERYENDSESSION then
- begin
- if nMsg.LParam = 0 then
- ShowMessage('关机或重启')
- else
- ShowMessage('注销');
- end;
- end;
- end.
转载于:https://www.cnblogs.com/chnxnghi/p/4164961.html
delphi处理消息的几种方式相关推荐
- ActiveMQ持久化消息的三种方式
本文只介绍三种方式,分别是持久化为文件,MYSql,Oracle.下面逐一介绍. A:持久化为文件 这个你装ActiveMQ时默认就是这种,只要你设置消息为持久化就可以了.涉及到的配置和代码有 < ...
- Kafka生产者发送消息的三种方式
Kafka是一种分布式的基于发布/订阅的消息系统,它的高吞吐量.灵活的offset是其它消息系统所没有的. Kafka发送消息主要有三种方式: 1.发送并忘记 2.同步发送 3.异步发送+回调函数 下 ...
- RocketMq 消费消息的两种方式 pull 和 push
在RocketMQ中一般有两种获取消息的方式,一个是拉(pull,消费者主动去broker拉取),一个是推(push,主动推送给消费者) 区别是: push方式里,consumer把轮询过程封装了,并 ...
- RocketMq : 消费消息的两种方式 pull 和 push
文章目录 1.概述 两种方式的优缺点对比: push pull 1.概述 原创在:https://blog.csdn.net/zhangcongyi420/article/details/905483 ...
- RabbitMQ(六)——Spring boot中消费消息的两种方式
前言 上一篇博客中,我们只是简单总结了Spring boot中整合RabbitMQ的操作,针对消息消费的两种方式只是简单给了一个实例,这篇博客,我们进一步总结关于Spring boot消息消费的相关功 ...
- Delphi 读取文本文件的两种方式
用两种方式读取文本文件:文件流读取和文件变量读取 一.文件流方式 {*******************************************************} {功能:读取文本文 ...
- MQ发送普通消息(三种方式)
MQ 发送普通消息有三种实现方式:可靠同步发送.可靠异步发送.单向(Oneway)发送.本文介绍了每种实现的原理.使用场景以及三种实现的异同,同时提供了代码示例以供参考. 可靠同步发送 原理:同步发送 ...
- java mq_java实现MQ消息收发两种方式
定义: 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.简单理解:蓝牙配对 jar包依赖: com.rab ...
- RabbitMQ学习(七)_RabbitMQ Consumer获取消息的两种方式(poll,subscribe)解析
RabbitMQ中consumer通过建立到queue的连接,创建channel对象,通过channel通道获取message, Consumer可以声明式的以API轮询poll的方式主动从queue ...
最新文章
- Nature Plants:根系微生物可以远程提高植物应对地上部环境胁迫的能力
- 分布式监控报警平台Centreon之:Centreon依赖安装
- SSH运维总结-【liunx学习】
- java算法 第七届 蓝桥杯B组(题+答案) 5.抽签
- 【转】2.1.1 购买阿里云服务器(Ubuntu系统)
- LeetCode 500. 键盘行
- Flask 富文本编辑器
- Kubernetes NetworkPolicy 工作原理浅析
- python内置函数map/reduce/filter
- 别说我不告诉你,如此养车包你把自己也养穷了……
- 小白入门级的视频剪辑软件
- c语言输出成绩与排名,C语言算成绩 要求输完两个分数后 同时输出两个分数换算出来的成绩...
- win7 install solution for intel SKL and BSW platform
- letax报错“ I can't write on file `***.pdf”
- 怎样辨别光模块的真假?
- 一文弄懂责任链设计模式
- MPLAB IDE V8.8进行程序烧写
- 疫情期间再读三体(4)——杨冬之死与“终极问题”的思考
- return false和return true
- 了解HTT1/HTT2/HTT3 ?
热门文章
- 何谓服务器托管服务?
- 将***拒之门外 设置电脑防止******
- go加载python_人生苦短我用python(02)动态加载模块-Go语言中文社区
- 不是方阵有逆矩阵吗_吴恩达机器学习笔记18逆矩阵、矩阵转置
- python输出质数序列_用python打印素数序列
- 了解下WSDL 绑定
- 硬件基础:电阻作用及产品应用
- stm32难不难学,没学51单片机可以直接学STM32吗?
- poj2553(强连通分量)
- 关于学习Python的一点学习总结(36->基本序列和映射协议)