能力值:
( LV2,RANK:10 )
|
-
-
2 楼
不太明白
你既然hook了
没有转发消息发送的代码
窗口就不可能收到拦截的消息
转发函数
CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);//继续消息的发送
|
能力值:
( LV9,RANK:610 )
|
-
-
3 楼
将 return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
换成 return TRUE;
就完成了拦截的作用。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
楼上正解~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
函数原形:LRESULT CALLBACK CallWndProc(int nCode,WPARAM wParam,LPARAM lParam );
参数:
nCode:指定该挂钩处理过程是否必须对该消息进行处理,若nCode 是HC_ACTION,则该挂钩处理过程必须处理该消息.若nCode的值小于0,则此挂钩处理过程必须在未对该消息作进一步处理的情况下,将其发送给函数 CallNextHookEx并返回由 CallNextHookEx返回的值.
wParam:指示该消息是否由当前线程发出,若该消息由当前线程发出,其值为非0值,否则,其值为0.
lParam:指向一个CWPSTRUCT结构,该结构包含了此消息的详细消息.
返回值:若nCode的值小于0,则此挂钩函数必须返回函数CallNextHookEx所返回的值;若nCode的值大于或等于0,我们极力推荐对函数CallNextHookEx进行调用,并返回其返回值.否则,其他安装了WM_CALLWNDPROC挂钩的应用程序将无法收到挂钩通知,从而导致错误的行为.若此挂钩没有调用函数CallNextHookEx,则返回值为0.
备注:挂钩处理函数CallWndPro可以对消息进行检查,但不能修改之.在该挂钩处理过程将控制返回给系统之后,该消息被发送至相应的窗口过程.
一个应用程序通过调用SetWindowsHookEx时指定WM_CALLWNDPROC挂钩类型及其相应挂钩处理过程的首地址来安装挂钩处理过程.
挂钩WM_CALLWNDPROC是在调用函数SendMessage的线程中被调用的,它并非在接受消息的线程中被调用.
同学,我用的就是这个钩子,结果备注里面写还是被发到目标窗口了。我想不发过去,有什么方法吗。
我返回TRUE或者0都试了,还是不行。。。呵呵~
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
同学在帮我看下好吗。。不行。。我在上面说明了~
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
呃不行。。。你再帮我看看好吗。同学
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我查到了,用这个HOOK就行,直接返回不调用CallNextHook
WH_GETMESSAGE
不过还是会发送到目标窗口上,不会截获,摧毁消息。。
我用的是对话框,不是窗口,与这个有关系吗
补充一下。我用WM_NULL代替了原来的消息,可以达到修改消息的目的(Msg->message)但是还是向目标窗口发送了一个WM_NULL我想不发送,这个消息直接从队里面去掉。该怎么做啊。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
3楼正解
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
直接将程序里对SENDMESSAGE函数的调用给NOP掉不就行了?
|
|
|