![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Реализация HOOK [D7, WinXP]
Alex_s © (2004-09-16 12:34:00)Уважаемые мастера!
Помогите плз разобраться с созданием ловушек. Почему у меня при нажатии любой клавиши в переменных code,wparam,lparam всегда одни и те же значения?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
SysHook:HHook=0;
implementation
{$R *.dfm}
procedure SysKeyProc(code:integer;wParam:word;lParam:longint);
var Key_Kod:word;
begin
Form1.Edit1.Text:=IntToStr(code);
Form1.Edit2.Text:=IntToStr(WParam);
Form1.Edit3.Text:=IntToStr(LParam);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SysHook:=SetWindowsHookEx(WH_Keyboard,@SysKeyProc,HInstance,0);
if SysHook<>0 then
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Есть хук');
end else
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Ошибка');
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if UnHookWindowsHookEx(SysHook) then
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Нет хука');
end else
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Ошибка');
end;
end;
end.
Alex_s (2004-09-16 13:31:00) [1]Спасибо MBo!
MBo (2004-09-16 13:18:00) [2]в код не смотрел, но SysKeyProc должно быть со спецификатором STDCALL!