unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.ComCtrls, System.ComponentModel, Borland.Vcl.AppEvnts;
type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    ListView1: TListView;
    procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  MsgCount:Integer;

implementation

{$R *.nfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);

var ListItem:TListItem;
begin
  Inc(MsgCount);
    case Msg.message of
    WM_KEYDOWN:     //Ϣ
    begin
      ListItem := ListView1.Items.Add;
      ListItem.Caption := IntToStr(MsgCount);              //Ϣ
      ListItem.SubItems.Add(Format('%x',[Msg.message]));    //Ϣ
      ListItem.SubItems.Add(Format('%s',[Chr(Msg.wParam)]));//wParamֵ
      ListItem.SubItems.Add(Format('%x',[Msg.lParam]));     //lParamֵ
      ListItem.SubItems.Add(Format('%d',[Msg.time]));       //Ϣʱ
      ListItem.SubItems.Add(Format('%d',[Msg.pt.X]));       //Xֵ
      ListItem.SubItems.Add(Format('%d',[Msg.pt.Y]));       //Yֵ 
    end;
    WM_LBUTTONDOWN: //Ϣ
    begin
      ListItem := ListView1.Items.Add;
      ListItem.Caption := IntToStr(MsgCount);            //Ϣ
      ListItem.SubItems.Add(Format('%x',[Msg.message])); //Ϣ
      ListItem.SubItems.Add(Format('%x',[Msg.wParam]));  //wParamֵ
      ListItem.SubItems.Add(Format('%x',[Msg.lParam]));  //lParamֵ
      ListItem.SubItems.Add(Format('%d',[Msg.time]));    //Ϣʱ
      ListItem.SubItems.Add(Format('%d',[Msg.pt.X]));    //Xֵ
      ListItem.SubItems.Add(Format('%d',[Msg.pt.Y]));    //Yֵ
    end;
    end;
    Handled:=false;
end;
end.
