//對(duì)照C語(yǔ)言的資料轉(zhuǎn)換為delphi的格式
const WH_KEYBOARD_LL = 13;
type
PBDLLHOOKSTRUCT = ^TBDLLHOOKSTRUCT;
TBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: DWORD;
end;
var
KeyBoardHook: HHOOK = 0;
MouseHook: HHook = 0;
function KeyboardProc(nCode: Integer;
WParam: WPARAM;LParam: LPARAM):LRESULT; stdcall;
begin
//屏蔽Alt+F4,Alt+Tab,Alt+Esc,左右WIN鍵
//ctrl+alt+del未屏蔽
if (nCode = HC_ACTION) then
begin
case wParam of
WM_KEYDOWN, WM_SYSKEYDOWN,
WM_KEYUP, WM_SYSKEYUP:
begin
if (PBDLLHOOKSTRUCT(lParam)^.vkCode = VK_LWIN) or
(PBDLLHOOKSTRUCT(lParam)^.vkCode = VK_RWIN) or
(PBDLLHOOKSTRUCT(lParam)^.vkCode = VK_TAB) or
(PBDLLHOOKSTRUCT(lParam)^.vkCode = VK_CONTROL) or
(PBDLLHOOKSTRUCT(lParam)^.vkCode = VK_Menu) or
(PBDLLHOOKSTRUCT(lParam)^.vkCode = VK_F4) or
(PBDLLHOOKSTRUCT(lParam)^.vkCode = VK_ESCAPE)
then
begin
result := 1;
exit;
end;
end;
end;
end;
result := CallNextHookEx(0, ncode, wparam, lparam);
end;
function MouseProc(nCode:Integer; WParam:WPARAM; LParam:LPARAM):LRESULT; stdcall;
begin
//鎖定鼠標(biāo)
Result:=1;
if nCode<>0 then Result:= CallNextHookEx(0, nCode, WParam, LParam);
end;
procedure StartHook;
begin
KeyBoardHook := SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, HInstance, 0);
MouseHook := SetWindowsHookEx(WH_MOUSE_LL, MouseProc,HInstance,0);
if (KeyBoardHook = 0) or (MouseHook = 0) then halt;
end;
procedure EndHook;
begin
if KeyBoardHook <> 0 then UnhookWindowsHookEx(KeyBoardHook);
if MouseHook <> 0 then UnhookWindowsHookEx(MouseHook);
end;