最近在用delphi做一个“小玩意”,要做一个测试程序来做记录分析,记录程序对大部分要记录的东西没有什么问题,比如对一个鼠标单击事件响应就记录一次。但是有一个事件是发生在“小玩意”内部的,我也要进行记录。记得以前用过postmessage在窗体间传递消息的,就用他!
要做的事情就是2件:(1)在主程序“小玩意”中加入发射消息代码;(2)在测试程序中加入接收消息代码。
(1)在“小玩意”中“我的事件”函数中加入:
//以下用于调试的时候 记录“我的事件”的次数
if hand1=0 then
hand1:=windows.findwindow(nil,pchar('mytest')); //根据窗体名称找到测试程序窗体的句柄
postmessage(hand1,1000,0,1); //向测试程序窗体发送一个消息,消息号为1000
(2)在测试程序中加入接收代码
............
private
{ Private declarations }
public
procedure Onreceive(var msg: TMessage); message 1000; //定义消息响应,消息号与发射端一致
end;
var
num:integer; // “我的事件”计数
implementation
{$R *.dfm}
.......
//接收消息
procedure TForm1.Onreceive(var msg: TMessage);
begin
num:=num+1; //接收一个消息,计数加1
label .Caption :=inttostr(num); //显示计数
end;
.......................
//============
我只需要记录事件次数,所以很简单的响应即可,postmessage的后面2个参数还可以用来传递更多消息包括字符串以及“很大”的东西,记得一本书上说他的实质是两个进程共享一个消息交换区。