帮忙实现个消息转发的hook

jzg1234 2008-03-17 09:24:20

知道两个窗口的句柄 hwnd1 hwnd2
但是没有hwnd1的消息处理,也就是不能取得hwnd1的消息,所以想用hook来实现一下

将hwnd1的一个区域(hwnd1的一部分)内的所有鼠标消息转发给 hwnd2 ,

请问该如何实现,最好给点代码,现在不太想研究hook,使用dll或者直接hook都行,只要代码简单就OK了

分不够可以再加的啊~~~~
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzg1234 2008-03-18
  • 打赏
  • 举报
回复
好的,非常感谢

我大部分功能都实现完成了,就只有在鼠标消息里的wParam参数了,不知道哪里有传递shift、ctrl、lbutton和rbutton的按下状态。

不过基本功能够用了
结帖,对了,要是有知道的,帮忙告诉一下
谢谢~~~~
cnzdgs 2008-03-18
  • 打赏
  • 举报
回复
WM_NCHITTEST消息的LPARAM是屏幕坐标,用MOUSEHOOKSTRUCT结构中pt.y<<16+pt.x。
Hook函数返回非0窗口就得不到消息了。
jzg1234 2008-03-18
  • 打赏
  • 举报
回复
我现在不清楚呢,只是把消息简单的发给下个 hook了

我现在想实现这样的功能:
把这个鼠标消息,使用sendmessage发送到另外的一个窗口,请问如何用MOUSEHOOKSTRUCT组织成鼠标消息的WPARAM 和 LPARAM ,鼠标消息的LPARAM是不是都是客户区域的鼠标位置,还是有屏幕上的鼠标位置,WM_NCHITTEST消息该如何处理。

在发送完成后我想让原来的窗口得不到这个消息该如何处理,返回负数??
cnzdgs 2008-03-18
  • 打赏
  • 举报
回复
你现在是怎么处理的?
jzg1234 2008-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cnzdgs 的回复:]
是SetWindowsHookEx更可靠一些,因为很多鼠标消息可能不会调用主窗口的窗口函数。
[/Quote]
这个能帮忙解释一下吗?现在正是遇到这个问题,只有主窗口在第一次激活时才出发鼠标点击事件,我以为是WM_NCHITTEST消息的问题,就把这个消息也给转发了,但是还是得不到正常的鼠标消息~~

cnzdgs 帮忙指点一下吧~~
jzg1234 2008-03-17
  • 打赏
  • 举报
回复
我也想过子窗口化,只是我在测试的时候子窗口化会出问题,才想用HOOK的

我现在还在测试子类化,如果可以就不用hook了,不太喜欢hook的方式
jameshooo 2008-03-17
  • 打赏
  • 举报
回复
子类化窗口就可以了,就是重新设置窗口过程来实现消息拦截。
区域鼠标消息在消息中自己判断鼠标位置就行了,但是如果这个区域中有子窗口,可能收不到子窗口的消息,不是所有的消息子窗口都会发送父通知消息的。
star119119 2008-03-17
  • 打赏
  • 举报
回复
dll的话,是 拦截另外一个程序的函数调用.

hook我也不是很熟悉,我只用来拦截api调用.针对键盘鼠标消息可以进行拦截.其他的还没用过
cnzdgs 2008-03-17
  • 打赏
  • 举报
回复
接收窗口消息必须是同一进程内的代码,不同进程则需要注入代码。重设窗口函数和SetWindowsHookEx的方法类似,不过还是SetWindowsHookEx更可靠一些,因为很多鼠标消息可能不会调用主窗口的窗口函数。
用SetWindowsHookEx给WH_MOUSE参数,在MouseProc中根据当前线程ID(或者进程ID)判断是不是目标线程(或进程),再判断是不是要监视的区域,如果是则发消息通知hwnd2。

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧