代码呢?拿出来看看阿一下是我写的一个代码,不会出错library KeyBoard;uses SysUtils, Windows, ShellApi, Messages, WinProcs, Classes;var KBHook:HHook; IsHooked:boolean; function KeyBoardProc(Code:integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall; const _keypressmask=$80000000; begin result:=0; if Code<0 then begin CallNextHookEx(KBHook,Code,wParam,lParam); end; if ((lparam and _keypressmask)=0) and (GetAsyncKeyState(VK_CONTROL)<0) and (GetAsyncKeyState(VK_MENU)<0) and (wParam=47) then begin ShellExecute(0,'Open','NotePad.exe',nil,nil,SW_SHOW); result:=1; end; end; function StartHook:boolean;stdcall; begin result:=false; if IsHooked then exit; KBHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyBoardProc,hInstance,0); if KBHook<>0 then begin Result:=true; IsHooked:=true end else IsHooked:=false; end; function RemoveHook:boolean;stdcall; begin result:=false; if (not IsHooked) and (KBHook<>0) then exit; UnHookWindowsHookEx(KBHook); Result:=true; IsHooked:=false; end;exports StartHook,RemoveHook;{$R *.res}begin end.
SysUtils,
Windows,
ShellApi,
Messages,
WinProcs,
Classes;var
KBHook:HHook;
IsHooked:boolean; function KeyBoardProc(Code:integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;
const
_keypressmask=$80000000;
begin
result:=0;
if Code<0 then
begin
CallNextHookEx(KBHook,Code,wParam,lParam);
end; if ((lparam and _keypressmask)=0) and (GetAsyncKeyState(VK_CONTROL)<0) and (GetAsyncKeyState(VK_MENU)<0) and (wParam=47) then
begin
ShellExecute(0,'Open','NotePad.exe',nil,nil,SW_SHOW);
result:=1;
end; end; function StartHook:boolean;stdcall;
begin
result:=false;
if IsHooked then exit;
KBHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyBoardProc,hInstance,0);
if KBHook<>0 then
begin
Result:=true;
IsHooked:=true
end
else
IsHooked:=false;
end; function RemoveHook:boolean;stdcall;
begin
result:=false;
if (not IsHooked) and (KBHook<>0) then exit;
UnHookWindowsHookEx(KBHook);
Result:=true;
IsHooked:=false;
end;exports
StartHook,RemoveHook;{$R *.res}begin
end.