//初学hook,啥也不懂,
//我想截获全局的鼠标,键盘操作。下面的代码,怎么我得到的iCode:; wparam, lparam: 是固定的值呢?unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
LogHook: HHook = 0;implementation{$R *.dfm}function LogProc(iCode: Integer; wparam, lparam: LongInt): lresult; stdcall;
begin
form1.Edit1.Text :=inttostr(icode);
form1.Edit2.Text :=inttostr(wparam);
form1.Edit3.Text :=inttostr(lparam);
form1.Edit4.Text :=inttostr(strtointdef(form1.Edit4.Text,0)+1); //计数器
Result := CallNextHookEx(LogHook, iCode, wParam, lParam);
end;
procedure seth();
begin
if LogHook = 0 then
begin
LogHook :=SetWindowsHookEx(WH_JOURNALRECORD,LogProc,HInstance,0);
end;
end;
procedure desh();
begin
if LogHook <> 0 then
begin
UnhookWindowsHookEx(LogHook);
LogHook := 0;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
seth();
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
desh();
end;
end.
//我想截获全局的鼠标,键盘操作。下面的代码,怎么我得到的iCode:; wparam, lparam: 是固定的值呢?unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
LogHook: HHook = 0;implementation{$R *.dfm}function LogProc(iCode: Integer; wparam, lparam: LongInt): lresult; stdcall;
begin
form1.Edit1.Text :=inttostr(icode);
form1.Edit2.Text :=inttostr(wparam);
form1.Edit3.Text :=inttostr(lparam);
form1.Edit4.Text :=inttostr(strtointdef(form1.Edit4.Text,0)+1); //计数器
Result := CallNextHookEx(LogHook, iCode, wParam, lParam);
end;
procedure seth();
begin
if LogHook = 0 then
begin
LogHook :=SetWindowsHookEx(WH_JOURNALRECORD,LogProc,HInstance,0);
end;
end;
procedure desh();
begin
if LogHook <> 0 then
begin
UnhookWindowsHookEx(LogHook);
LogHook := 0;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
seth();
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
desh();
end;
end.
解决方案 »
- 做自动更新程序时遇到点问题不明白了,请帮看一下是什么意思?
- 有没有办法把checkbox加到dbgrid里面去啊
- 各位高手帮帮忙,网上哪里有能实现这个功能的DELPHI编程代码或各位有什么设计方法啊???
- 此错误是否因为控件没有被包含进来?急需答案。
- 请问ThemeEngine 3.5.8安装的密码?
- 如何取得申请进入局域网的机器的IP和机器名、密码
- oracle adoquery 错误,看了一晚不知错在哪.
- 吐血问题: 如何实现在同一行中将内容打印两次(打印机不走纸,且无法用TEXTOUT)
- 谁使用过TypeLib?
- 关于key的问题
- 关于硬盘信息问题!
- 高分请教,如何做一个有焦点的超链接控件?
为什么我得到的
iCode:; wparam, lparam参数值是固定的 0,0,1244872