为什么我的Hook只能接收到我自己程序的消息?
dudo 2003-03-21 10:02:10 library eBoardHook;
uses
Windows,
Messages,
HookUnit in 'HookUnit.pas';
exports
InstallHook,
UninstallHook,
IsHooked;
end.
unit HookUnit;
interface
uses
Windows,Messages;
const
MSG_HOOK_MOUSE_EVENT='My_MOUSE_EVENT';
function InstallHook(Hwnd: Cardinal): Bool; stdcall;export;
function UninstallHook: Bool; stdcall;export;
function IsHooked: Bool;stdcall;export;
implementation
var
HookHandle: HHook;
WindowHandle: HWND;
MouseHookEvent: integer;
function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM):
LRESULT; stdcall;
begin
if nCode = HC_ACTION then
begin
with PMouseHookStruct(lParam)^ do
PostMessage(WindowHandle,MouseHookEvent, wParam, (pt.x and $FFFF) or (pt.y shl 16));
end;
Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
end;
function InstallHook(Hwnd: Cardinal): Bool; stdcall;export;
begin
HookHandle := SetWindowsHookEx(WH_MOUSE, @MouseHookProc, HInstance, 0);
Result := HookHandle>0;
if Result then
begin
WindowHandle := Hwnd;
if MouseHookEvent=0 then
// MouseHookEvent:=RegisterWindowMessage(PChar(MSG_HOOK_MOUSE_EVENT));
MouseHookEvent:=WM_User+1054;
end;
end;
function UninstallHook: Bool; stdcall;export;
begin
Result := UnhookWindowsHookEx(HookHandle);
HookHandle := 0;
end;
function IsHooked: Bool;stdcall;export;
begin
Result:=HookHandle>0;
end;
end.