hook procedure local
O que é e como usar hook procedure local ?
Lab
Curtidas 0
Respostas
Nildo
04/07/2005
O que é e como usar hook procedure local ?
Onde você viu isso? Seria interessante se tivessemos o contexto dessa frase.
GOSTEI 0
Lab
04/07/2005
O contexto era este:
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Movimento(var Msg:TMessage); message WM_USER+1;
var
Form1: TForm1;
HC_KEYBOARD_Handle:THandle; // Handle da hook
implementation
// hook função tipo teclado
function KeyboardProc(nCode:Integer; wParam:WPARAM; lParam:LPARAM):LRESULT; stdcall;
begin
if wParam in [37,38,39,40] then
SendMessage(Form1.Handle, WM_USER+1, wParam, lParam);
Result := CallNextHookEx(HC_KEYBOARD_Handle, nCode, wParam, lParam);
end;
{$R *.dfm}
// instala [b:ab81df756c]hook procedure local[/b:ab81df756c]
procedure TForm1.FormCreate(Sender: TObject);
begin
HC_KEYBOARD_Handle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, 0, GetCurrentThreadID);
end;
// libera a hook procedure
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(HC_KEYBOARD_Handle);
inherited;
end;
// se a hook interceptou as setas do teclado, manda uma msg p/ cá
procedure TForm1.Movimento(var Msg:TMessage);
begin
Case Msg.wParam of
37 : Image1.Left := Image1.Left-1;
39 : Image1.Left := Image1.Left+1;
38 : Image1.Top := Image1.Top-1;
40 : Image1.Top := Image1.Top+1;
end;
end;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Movimento(var Msg:TMessage); message WM_USER+1;
var
Form1: TForm1;
HC_KEYBOARD_Handle:THandle; // Handle da hook
implementation
// hook função tipo teclado
function KeyboardProc(nCode:Integer; wParam:WPARAM; lParam:LPARAM):LRESULT; stdcall;
begin
if wParam in [37,38,39,40] then
SendMessage(Form1.Handle, WM_USER+1, wParam, lParam);
Result := CallNextHookEx(HC_KEYBOARD_Handle, nCode, wParam, lParam);
end;
{$R *.dfm}
// instala [b:ab81df756c]hook procedure local[/b:ab81df756c]
procedure TForm1.FormCreate(Sender: TObject);
begin
HC_KEYBOARD_Handle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, 0, GetCurrentThreadID);
end;
// libera a hook procedure
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(HC_KEYBOARD_Handle);
inherited;
end;
// se a hook interceptou as setas do teclado, manda uma msg p/ cá
procedure TForm1.Movimento(var Msg:TMessage);
begin
Case Msg.wParam of
37 : Image1.Left := Image1.Left-1;
39 : Image1.Left := Image1.Left+1;
38 : Image1.Top := Image1.Top-1;
40 : Image1.Top := Image1.Top+1;
end;
end;
GOSTEI 0
Nildo
04/07/2005
Procedimento de hook Local.
É um procedimento que vai interceptar as teclas pressionadas.
É um procedimento que vai interceptar as teclas pressionadas.
GOSTEI 0
Massuda
04/07/2005
Além do que o Nildo escreveu, acho que o comentário usa o termo ´local´ porque do modo como foi feito, esse hook de teclado irá funcionar apenas para o aplicativo que instalou o hook. O que for digitado em outros programas não será capturado por esse hook.
GOSTEI 0