zoukankan      html  css  js  c++  java
  • 使用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.

  • 相关阅读:
    适配器模式
    事务
    JUnit4
    命令模式
    组合模式
    MySQL语法
    MyEclipse工具
    数据源和连接池
    Annotation
    Java反射机制
  • 原文地址:https://www.cnblogs.com/zyb2016/p/11471137.html
Copyright © 2011-2022 走看看