unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 =
class(TForm)
btnHook: TButton;
edWndToHook: TEdit;
lvMain: TListView;
procedure btnHookClick(Sender: TObject);
private
{ Private declarations }
protected
procedure _WMCopyData(
var Msg: TWMCopyData);
message WM_COPYDATA;
public
{ Public declarations }
end;
var
Form1: TForm1;
function InstallHook(DWThreadID: DWORD): boolean;
stdcall external '
HookDLL.dll';
implementation
{$R *.dfm}
procedure TForm1.btnHookClick(Sender: TObject);
begin
if not InstallHook(0)
then // nicht dwThreadID übergeben, sondern 0, weil ALLE Applikationen gehookt werden sollen.
raise Exception.Create('
Error installing hook');
end;
procedure TForm1._WMCopyData(
var Msg: TWMCopyData);
var
aMsg: ^tagMsg;
begin
aMsg := Msg.CopyDataStruct.lpData;
with lvMain.Items.Add
do
begin
Caption := IntToStr(aMsg^.time);
SubItems.Add(IntToStr(aMsg^.
message));
SubItems.Add(IntToStr(aMsg^.wParam));
SubItems.Add(IntToStr(aMsg^.lParam));
end;
end;
end.