⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ulockhook.pas

📁 电脑锁定
💻 PAS
字号:
unit uLockHook;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
  WH_KEYBOARD_LL       =  $000D;
  LLKHF_EXTENDED       =  $0001;
  LLKHF_INJECTED       =  $0010;
  LLKHF_ALTDOWN        =  $0020;
  LLKHF_UP             =  $0080;

type
  tagKBDLLHOOKSTRUCT =  packed record
    vkCode :            DWORD;
    scanCode :          DWORD;
    flags :             DWORD;
    time :              DWORD;
    dwExtraInfo :       Integer;
  end;
  KBDLLHOOKSTRUCT      =  tagKBDLLHOOKSTRUCT;
  PKBDLLHOOKSTRUCT     =  ^KBDLLHOOKSTRUCT;
  
var
  hkHook : HHook;
  function LowLevelKeyboardProc(nCode: Integer; wParam: Integer; lParam: Integer): Integer; stdcall; export;
  procedure HookIt;
  procedure UnHookIt;

implementation

procedure HookIt;
begin
  hkHook := SetWindowsHookEx(WH_KEYBOARD_LL,@LowLevelKeyboardProc,hInstance,0);
end;

procedure UnHookIt;
begin
  UnHookWindowsHookEx(hkHook);
end;

function LowLevelKeyboardProc(nCode: Integer; wParam: Integer; lParam: Integer): Integer; stdcall; export;
var  
  Hook : PKBDLLHOOKSTRUCT;
  bControlKeyDown : Boolean;
begin
  Hook := Pointer(lParam);
  Case nCode Of
     HC_ACTION:
      begin
      bControlKeyDown := ((GetAsyncKeyState(VK_CONTROL) SHR ((Sizeof(SHORT) * 8) - 1)) <> 0);
      //Disable CTRL+ESC
      If (Hook^.vkCode = VK_ESCAPE) And (bControlKeyDown) Then
        begin
        Result:=1;
      end
      //Disable ALT+TAB
      Else If ((Hook^.flags And LLKHF_ALTDOWN) <> 0) And (Hook^.vkCode = VK_TAB) Then
        begin
        Result:=1;
      end
      //Disable ALT+ESC
      Else If ((Hook^.flags And LLKHF_ALTDOWN) <> 0) And (Hook^.vkCode = VK_ESCAPE) Then
        begin
        Result:=1;
      end
      //Disable CTRL+ENTER
      Else If (Hook^.vkCode = VK_RETURN) And (bControlKeyDown) Then
        begin
        Result := 1;
      end
      //Disable Windows Key
      Else If (Hook^.vkCode = VK_LWIN) Or (Hook^.vkCode = VK_RWIN) Then
        begin
        Result := 1;
      end
      //Disable All ALT Keys
      Else If (Hook^.vkCode = VK_MENU) Or (Hook^.vkCode = VK_LMENU) Or (Hook^.vkCode = VK_RMENU) Then
        begin
        Result := 1;
      end
      Else      
        begin
        Result := CallNextHookEx(hkHook,nCode,wParam,lParam);
      end;
    end;
    Else
      begin
      Result := CallNextHookEx(hkHook,nCode,wParam,lParam);
    end;
  end;
end;

end.
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -