钩子中如何拦截别的窗口中的指定Caption按钮的事件?

ysb 2005-03-08 10:02:38
我使用了
SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, hins, 0)
但是如何在CallWndProc中知道消息是哪个按钮投递过来的?
谢谢!
...全文
230 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xuzheng318 2005-03-08
你是的是什么?SetCapture
回复
ysb 2005-03-08
vcleaner,你指的findwindow(ex)是在WM_COMMAND时调用,还是在WM_SYSCOMMAND时调用?
如果是前者,点击按钮时就会触发,这时能找到窗口,然后这样再EnumChildWindows时是没有意义的,因为只要是这个窗口中的按钮被点击了,就一样去EnumChildWindows,这样还是无法实现。

如果是WM_SYSCOMMAND,好像点击按钮时又不会被触发。

是不是我的理解有问题?还是怎么回事?
回复
shxng 2005-03-08
学习ing
回复
xuzheng318 2005-03-08
WM_SYSCOMMAND消息参数中
回复
老夏Max 2005-03-08
使用SPY++看看ID,然后使用kingzai说的方法:FindWindow(Ex)和EnumChildWindows获得按钮的句柄,然后使用FromHandle获得按钮的指针,然后GetWindowText获得Caption,判断是否是你需要的。然后拦截此按钮的消息!
回复
kingzai 2005-03-08
you can get control id from using GetDlgCtrlID api. and you can get button hwnd using EnumChildWindows
回复
ysb 2005-03-08
至于Caption,我这里只是描述我要做的事情,你可以认为我的描述是错误的,呵呵!

简单的说,就是我要拦截别人的程序中某个按钮的点击事件,又没有办法知道那个按钮的ID号,怎么去做?
呵呵,我想了很久都没有想到办法。
在WM_CREATE中倒是可以通过GetWindowText找到它,不过程序中不知道它是怎么搞的,所有的按钮得到的Text都是相同的。
回复
老夏Max 2005-03-08
hook WM_SYSCOMMAND?
WM_SYSCOMMAND消息参数中有Caption吗?呵呵,继续关注!
回复
kingzai 2005-03-08
hook WM_SYSCOMMAND message,SC_CLOSE,SC_MAXIMIZE...param.
回复
老夏Max 2005-03-08
Caption!?兄弟是做VB的?呵呵
这个比较困难把,没有做过,关注!
回复
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
帖子事件
创建了帖子
2005-03-08 10:02
社区公告
暂无公告