使用windows函数SetWindowsHookEx实现键盘钩子
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, RzEdit, RzSpnEdt;
type
TForm1 = class(TForm)
Edit1: TEdit;
RzSpinEdit1: TRzSpinEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
end;
{声明键盘钩子回调函数; 其参数传递方式要用 API 的 stdcall}
function KeyHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
hook: HHOOK; {定义一个钩子句柄}
{实现键盘钩子回调函数}
function KeyHook(nCode: Integer; wParam: wParam; lParam: lParam): LRESULT;
begin
if (wParam = 65) then
Form1.Edit1.Text:=IntToStr(strtoint(Form1.Edit1.Text)+1);
Result := CallNextHookEx(hook, nCode, wParam, lParam);
end;
{设置键盘钩子}
procedure TForm1.FormCreate(Sender: TObject);
begin
hook := SetWindowsHookEx(WH_KEYBOARD, @KeyHook, 0, GetCurrentThreadID);
end;
{释放键盘钩子}
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(hook);
end;
end.
最新文章
- Android随笔之——Android单元测试
- PD中将Comment 从Name复制值
- Jboss 安全和优化
- VMware虚拟系统 bridged、NAT、host-only三种网络连接模式
- DBA日常SQL之查询数据库运行状况
- [原创]大连sap vt 实习生面试经历
- Spring 3.1 Environment Profiles--转载
- buptoj 1578
- 解决手机浏览器和微信中select中border:none;无用和去掉小三角
- ipset高大上性能果断将nf-HiPac逼下课
- 【从0开始Tornado网站】主页登录和显示的最新文章
- innodb关键特性之double write
- 代码覆盖率 (Code Coverage)从简到繁 (一)
- vmware虚拟机安装了linux(redhat)系统忘记登录密码怎么办
- Magic Stones CodeForces - 1110E (思维+差分)
- 以ActiveMQ为例JAVA消息中间件学习【2】
- ArrayList扩容
- Bitmap 位图
- wiki文档书写格式
- Java VM(虚拟机) 参数
热门文章
- ASA-ACL类型
- mybatis源码探索笔记-1(构建SqlSessionFactory)
- 【PAT甲级】1043 Is It a Binary Search Tree (25 分)(判断是否为BST的先序遍历并输出后序遍历)
- 操作系统OS - 线程中的join()为什么叫join
- LeetCode简单题(二)
- Spring Boot + MyBatis + PostgreSql
- 第1节 Scala基础语法:scala中的方法源码分析
- 【PAT甲级】1014 Waiting in Line (30 分)(队列维护)
- gradle 打包所有依赖 Invalid signature file digest for Manifest main attributes(转)
- Android开发实例之miniTwitter登录界面的实现