全局Hook无效的问题
我在dll模块的sethook函数里调用
hCallWndHook := SetWindowsHookEx(WH_CALLWNDPROC,@CallWndProc,hInstance,0);
callwndproc函数(在Dll中):
function CallWndProc(nCode: Integer;WParam: WPARAM; LParam: LPARAM): LRESULT;stdcall;
var
cwpSturcts: PCWPSTRUCT;
begin
if nCode = HC_ACTION then
begin
// Process the hook if the Veneto window handle is valid
if hWin<> 0 then //hWin是我的主程序的主窗口的句柄,由主程序传给Dll
begin
cwpSturcts := PCWPSTRUCT(lParam);
//其他一些处理..........
//UpdateRectMessage是自定义的消息,由主程序传给Dll
PostMessage(hWin, UpdateRectMessage, wParam, lParam);
end;
end;
CallWndProc := CallNextHookEx(hCallWndHook, nCode, wParam, lParam);
end;
在主程序中替换主窗口的消息处理过程(WindowProc)为MyWindowProc
procedure TForm1.MyWindowProc(var msg : TMessage);
begin
//result := 0;
if msg.Msg = UpdateRectMessage then
begin
//处理...........
end;
WndProc(msg);
end;
现在发现只能截到本进程的消息,其它进程的消息似乎无法截取,各位大虾看看我到底哪里不对了?