Перехват (Hook) клавиатуры (программа Sendkeys)
SendKey - DLL-ка
Project1 - Управляющая программа
Project1.dpr
program Project1;
uses
{$R *.RES}
begin
SendKey.dpr
library SendKey;
uses
const
var
var H: HWND;
begin
{при выгрузке DLL надо снять ловушку}
procedure LocalExitProc; far;
begin
exports Key_Hook;
{инициализация DLL при загрузке ее в память}
begin
{устанавливаем ловушку}
Unit1.dfm
object Form1: TForm1
Unit1.pas
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
{пользовательские сообщения}
const
type
procedure FormCreate(Sender: TObject);
private //Обработчики сообщений
var
implementation
{$R *.DFM}
//Загрузка DLL
function Key_Hook(Code: integer; wParam: word; lParam: Longint) : Longint; stdcall; external 'SendKey' name 'Key_Hook';
procedure TForm1.WM_LefttMSG (Var M : TMessage);
begin
procedure TForm1.WM_RightMSG (Var M : TMessage);
begin
procedure TForm1.WM_UptMSG (Var M : TMessage);
begin
procedure TForm1.WM_DownMSG (Var M : TMessage);
begin
procedure TForm1.FormCreate(Sender: TObject);
begin
{если не использовать вызов процедуры из DLL в программе,
то компилятор удалит загрузку DLL из программы}
P:=@Key_Hook;
end;
end.