同上

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      function KeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LResult;STDCALL;
    var
      Form1: TForm1;
      WinHook: HHOOK;
    implementation{$R *.dfm}function KeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LResult;begin
      if (nCode>-1) then
      begin
        if wparam=VK_SHIFT then
          showmessage('your press the shift');
        result:=0;
      end
      else
        Result := CallNextHookEx(WinHook, nCode, wParam, lParam);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
       WinHook:=SetWindowsHookEx(WH_KEYBOARD, @KeyboardHook, 0, GetCurrentThreadID);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      UnhookWindowsHookEx(WinHook);
    end;end.
    键盘钩子