//-----------勾子判断按键方法-------
function LowLevelKeyboardProc(Wnode: Integer; Wparam: WPARAM; Lparam: LPARAM):LRESULT;stdcall;
type
KeyHook = record
VKcode: DWORD;
ScanCode: DWord;
Flags: DWord;
Time: DWord;
dwExtraInfo: DWord;
end;
var
p : ^keyhook;
begin
Result := 0;
p := Pointer(Lparam);
if Wnode = HC_ACTION then
begin
case Wparam of
WM_KEYDOWN, WM_KEYUP, WM_SYSKEYUP, WM_SYSKEYDOWN:
begin
if p.VKcode = VK_F1 then //这时只是判断按下是不是F1键
Result := 1
else if p.VKcode = VK_ESCAPE then
Result := 1;
end;
end;
end
else if Wnode <> 0 then
begin
Result := CallNextHookEx(0,Wnode, Wparam, Lparam );
end;
end;
//----------注册勾子
procedure TForm2.registerTO;
const
WM_Key_F1 = 13;
begin
WM_sock := 0;
WM_sock := RegisterWindowMessage('WM_Sock');
hhandle := Handle;
hook := SetWindowsHookEx(WM_Key_F1, LowLevelKeyboardProc, HInstance, 0);
end;
//-------------删除勾子---------
procedure TForm2.DeleteRegister;
begin
UnhookWindowsHookEx(hook);
end;